网络基本概念和TCP、UDP协议
------------------------------------------------------------------------------------------------------------------------------------------
冲突域:如果几台设备同时向一台设备发送数据产生冲突,则这几台设备处于一个冲突域中,反之不在一个冲突域
总线拓扑:总线不能断
星型拓扑:中间交换机不可以故障
扩展星型拓扑
环形拓扑
双环拓扑
全网状拓扑
部分网状拓扑
了解主机到主机通信
旧模型
专有产品
由一个厂商控制应用程序和嵌入的软件
基于标准的模型
多厂商软件
分层方法
网络模型
OSI:开放系统互联
ISO:国际标准化组织
逻辑寻址:人为指定ip地址以便于管理
下层只为相邻的上层提供服务
物理层:二进制传输
为启动、维护以及关闭物理链路定义了电器规范、机械规范、过程规范和功能规范,数据格式为0101……
数据链路层:访问介质
定义如何格式化数据以便进行传输以及如何控制对网络的访问,数据格式为帧;
支持错误检测;
MAC地址在数据链路层定义
网络层:数据传输
路由数据包;
选择传递数据的最佳路径;
支持逻辑寻址和路径选择
传输层:传输问题
确保数据传输的可靠性;建立、维护和终止虚拟电路;通过错误检测和恢复;
信息流控制来保障可靠性
会话层:主机间通信
建立、管理和终止应用之间的会话
表示层:数据表示
确保接受系统可以读出该数据;
格式化数据;
构建数据;
协商用于应用层的数据传输语法;
提供加密
应用层:网络进程访问应用层
为应用程序进程(例如电子邮件、文件传输和终端仿真)提供网络服务;
提供用户身份验证
数据封装:按照七层模型从上到下的顺序对数据进行处理,在自己的设备上完成数据封装
数据解封
FCS:校验位
对等通信
PDU
PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位
物理层的PDU是数据位bit
数据链路层的PDU是数据帧frame
网络层的PDU是数据包packet
传输层的PDU是数据段segment
其他更高层次的PDU是消息message
三种通讯模式
单播:数据报文地址内的发送目标为1台设备
广播:数据发送目标为一定范围内所有设备,广播越多,对网络干扰越大
组播(多播):数据发送目标为多组设备
单工:目标主机和本主机之间通讯为单向,有去无回,比如电视
半双工:目标主机和本主机之间通讯为双向的,数据传输为轮流传输,比如对讲机
全双工:目标主机和本主机之间通讯为双向的,数据传输为同时传输,比如视频聊天
局域网:Local Area Network
基于广播机制通讯
广域网
基于点对点机制通讯
网线:UTP非屏蔽式双绞线
STP屏蔽式双绞线,加一层金属保护,增强抗干扰
T568A线序:绿白、绿、橙白、蓝、蓝白、橙、棕白、棕
T568B线序:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕
百兆以内用到4根线:1、2、3、6,12发,36接
千兆以内用到全部线
两边线序一样称作UTP直通线
T568A和T568B互为UTP交叉线
因为现在硬件设备可以自动识别T568A和T568B,因此普遍使用T568B线
双绞线传输最远距离为100米
GBIC:千兆电信号转换为光信号的接口器件
以太网:是数据链路层的协议之一(协议里有PPPOE、以太网、高级链路控制协议、帧中继、异步传输模式),属于局域网协议,它既定义了双绞线的标准,又定义了数据帧的格式
帧:frame
帧的结构 : 前导信息 目标地址 源地址 类型 数据 校验位
位 : 8 6 6 2 46-1500 4
类型是上层类型编号,用来让计算机识别位于哪一层
数据包括从网络层、传输层、会话层、表现层、app、data的数据
冲突检测的载波侦听多路访问CSMA/CD
早期以太网协议中设备低于1024台,否则冲突过多
Hub:多端口中继器,工作在物理层
Hub并不记忆该信息包是由哪个MAC地址发出,哪个MAC地址在Hub的哪个端口
Hub的特点:共享带宽、半双工
Hub性能差、不安全
ISO七层网络模型,但实际工作中没有应用到这么多,目前使用的是TCP/IP协议
以太网桥:计算机通过Hub连接到以太网桥,可以记录计算机在哪个域,从而在以后的使用中将数据不走其它线路而直接送达目标计算机
交换机:直接连接计算机,每个接口都是一个独立的冲突域,全双工机制,大大提升了速率,可以隔断冲突域,但不能隔断广播域
交换机工作在数据链路层
以太网桥:计算机通过Hub连接到以太网桥,可以记录计算机在哪个域,从而在以后的使用中将数据不走其它线路而直接送达目标计算机
交换机:直接连接计算机,每个接口都是一个独立的冲突域,全双工机制,大大提升了速率,可以隔断冲突域,但不能隔断广播域
交换机工作在数据链路层
减少冲突域内或者广播域内计算机可以提升网络性能
交换机可以隔断冲突域
路由器可以隔断广播域
路由表不是路由器专有的,PC也有,设备依靠路由表寻找数据的转发路径
路由器:分隔广播域
选择路由表中到达目标最好的路径
维护和检查路由信息
连接广域网
网卡工作在数据链路层
ACL:访问控制列表
路由器:路由器工作在网络层
路由表:route table,路由表组成
网络地址:分析目标地址
接口:数据有可能从路由器的哪个出口出来,哪个就是接口
网关:目标网络与发数据的设备不在一个网段内,下一个路由器邻近主配置路由器的接口ip就是网关,线路和路由器连接的口网关不用配置
metric:可以理解为跃点数,该值越小,路由选择此路径优先级越高
VLAN:虚拟局域网,可以看作是广播域,是一种逻辑网络
特点:分隔广播域、安全、灵活管理
trunk:公共干道接口,不属于某个单独的vlan,多个vlan数据都会使用该接口
802.1Q:trunk上加vlan标签的协议,使得数据可以跨vlan传输
分层的网络架构
核心层:Core Layer,快速转发数据
分布层:Distribution Layer,用路由器隔开,设置访问权限
访问层:AccessLayer,先将设备连入网络,汇入分布层
STP:生成树协议,解决交换机回环问题,是一种动态算法
TCP/IP协议
Transmission Control Protocol / Internet Protocol
传输控制协议 / 因特网互联网协议
1983年取代了旧的网络控制协议NCP
定义了四层
四层模型和OSI七层模型对应关系
应用层协议
File transfer
–FTP
–TFTP
–Network File System
–Simple Mail Transfer Protocol
Remote login
–Telnet
–rlogin
Network management
–Simple Network Management Protocol
Name management
–Domain Name System
传输层两大协议:UDP和TCP
可靠性 | 传输效率 | |
连接类型 | 面向连接 | 非面向连接 |
协议 | TCP | UDP |
按序号先后接收数据 | Yes | No |
用途 | 邮件 文件共享 下载 | 音频 视频 |
TCP特性
工作在传输层
面向连接协议:确认对方与自己有稳定的网络状态
全双工协议:可以同时传输数据
半关闭:单方面关闭数据连接
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
传输层报文头部结构
TCP包头
源端口号从0-65535,即216个端口号
序号:靠序号实现数据包可靠传输
确认号:期望对方下次发送数据包的编号,用小写ack表示
序号和确认号结合起来可以实现数据的安全通信
数据偏移:说明报文有多长
标记位:占6位,其中含义有
URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效
ACK:确认位,表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段,例如ACK12表示本设备希望对方下次发送第12号数据包
PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段
SYN:同步位,在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,同步位说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
FIN:分手位,表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
窗口:表示发送设备发多少个包接收设备会确认1次,协商双方能接收多少数据
TCP三次握手
前三步确定稳定的网络状态,之后可以正常通讯
图中seq表明设备自身的该文件编号
TCP四次挥手
11种有限状态机
CLOSED 没有任何连接状态
LISTEN 侦听状态,等待来自远方TCP端口的连接请求
SYN-SENT 在发送连接请求后,等待对方确认
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
ESTABLISHED 代表传输连接建立,双方进入数据传送状态
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING 双方同时尝试关闭传输连接,等待对方确认
孤儿连接: 客户端执行半关闭后,未等服务器关闭连接就强行退出了,此时客户端连接由内核来接管
DDOS攻(龘)击:拒绝服务攻(龘)击,伪造大量ip,对服务器进行访问,使得服务器的回应长时间无响应,占据大量访问数,从而使得正常用户无法正常访问
协议端口
FTP 用TCP21端口
Tlenet用TCP23端口
Http用TCP80端口
DNS用TCP 53和UDP53端口
TFTP用UDP69端口
SNMP用UDP161端口
传输层通过port号,确定应用层协议
Port number:
tcp:传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后拆除链路
0-65535
udp:User Datagram Protocol,无连接的协议
0-65535
IANA:互联网数字分配机构(负责域名,数字资源,协议分配)
0-1023:系统端口或特权端口(仅管理员可用) ,众所周知,永久的分配给固定的系统应用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
1024-49151:用户端口或注册端口,但要求并不严格,分配给程序注册为某应用使用,1433/tcp(SqlServer), 1521/tcp(oracle), 3306/tcp(mysql), 11211/tcp/udp(memcached)
49152-65535:动态端口或私有端口,客户端程序随机使用的端口,其范围的定义:/proc/sys/net/ipv4/ip_local_port_range
TCP超时重传
异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务
TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收 到接收方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略
与TCP超时重传相关的两个内核参数:
/proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3
/proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)
拥塞控制
网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可承受的能力,网络的性能就会变坏。这种情况就叫做拥塞
TCP为提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性。即所谓的拥塞控制
TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:慢启动(slow start)、拥塞避免(congestion avoidance)、快速重传(fast retransmit)和快速恢复(fast recovery)。拥塞控制算法在Linux下有多种实现,比如reno算法、vegas算法和cubic算法等。它们或者部分或者全部实现了上述四个部分
当前所使用的拥塞控制算法,/proc/sys/net/ipv4/tcp_congestion_control
UDP特性
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性
UDP包头
16位源端口号
16位目标端口号
16位UDP长度
16位UDP校验码