TCP
TCP是面向连接的,可靠的进程到进程通信的协议,TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。
TCP报文段
TCP将若干个字节构成一个分组,称为报文段,TCP报文段封装在IP数据包中
首部长度为20~60字节,以下是各字段的含义
源端口号:它是16位字段,为发送方进程对应的端口号
目标端口号:它是16位字段,对应的是接收端的进程,接收端收到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进程
序号:当TCP从进程接收数据字节时,就把他们存储在发送缓存中,并对每一个字节进行编号,编号特点如下
编号不一定从0开始,一般会产生一个随机数作为第一个字节的编号,称为初始序号(ISN),范围是0~2(32)-1
TCP每个方向的编号是互相独立的
当字节都被编上号后,TCP就给每个报文段指派一个序号,序号就是该报文段中第一个字节的编号
当数据到达目的地后,接收端会按照这个序号把数据重新排列,保证数据的正确性
确认号:对发送端的确认信息,用它来告诉发送端这个序号之前的数据段都已经收到,如确认号是X,就是表示前X-1个数据段都已经收到
首部长度:用它可以确定首部数据结构的字节长度,一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节
保留:这部分保留位供今后扩展功能用,现在还没有使用到
控制位:这六位有很重要的作用,TCP的连接,传输和断开都受这六个控制位的指挥,各位含义如下:
URG:紧急指针有效位
ACK:只有当ACK=1时,确认序列号字段才有效,当ACK=0时,确认号字段无效
PSH:标志位为1时,要求接收方尽快将数据段送达应用层
RST:当RST值为1时,通知重新建立TCP连接
SYN:同步序号位,TCP需要建立连接时将这个值设为1
FIN:发送端完成发送任务位,当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1
窗口大小:说明本地可接收数据段的数目,这个值的大小是可变的,当网络通畅时将这个窗口值变大以加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP中的流量控制机制就是依靠变化窗口的大小实现的
校验和:用来做差错控制,与IP的校验和不同,TCP校验和的计算包括TCP首部,数据和其他填充字节
紧急指针:和URG配合使用,当URG=1时有效
选项:在TCP首部可以有多达40字节的可选信息
TCP连接
TCP连接是面向连接的协议,它在源点和终点之间建立一条虚连接。TCP建立廉价的过程需要三次握手,而四次握手时终止连接
常用的TCP端口
UDP
UDP是一个无连接,不保证可靠性的传输层协议,也就是说发送端不关心发送的数据是否到达目标主机,数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。
UDP首部的格式
各字段的含义如下
源端口号:用来标识数据发送端的进程,和TCP协议的端口号类似
目的端口号:用来标识数据接收端的进程,和TCP协议的端口号类似
UDP长度:用来指出UDP的总长度,为首部加上数据
校验和:用来完成对UDP数据的差错检验,它的计算与TCP校验和类似,这是UDP提供的唯一可靠机制
UDP常见的端口号
ACL的类型
标准ACL:根据数据包的源IP地址来允许或拒绝数据包,标准ACL的访问控制列表号是1~99
扩展ACL:根据数据包的源IP地址,目的IP地址,指定协议,端口和标志来允许或拒绝数据包,扩展ACL的访问控制列表号是100~199
命名ACL:允许在标准ACL和扩展ACL中使用名称代替表号
ACL的检查条件
ACL依靠规则对数据包执行检查,而这些规则通过检查数据包中的指定字段来允许或拒绝数据包,ACL通过五个元素来执行检查,这些元素位于IP头部和传输层头部中,他们分别是源IP地址,目标IP地址,协议,源端口及目标端口
ACL规则的匹配顺序
如果匹配第一条规则,则不再往下检查,路由器将决定该数据包允许通过或拒绝通过
如果不匹配第一条规则,则依次往下检查,直到有任何一条规则匹配,路由器将决定该数据包允许通过或拒绝通过
如果最后没有任何一条规则匹配,则路由器根据默认的规则将丢弃该数据包
数据包最后要不被允许,要么被拒绝
ACL应用的方向
ACL是一组规则的集合,他应用在路由器的某个接口上,对于路由器接口而言,ACL有以下两个方向
出:已经过路由器的处理,正离开路由器接口的数据包
入:已到达路由器接口的数据包,将被路由器处理