三次握手
?客户端发送-----服务端收到-----服务端发送
?第一次握手:建立连接时,客户端发送SYN包到服务器
?第二次握手:服务器收到SYN包,先确认客户的SYN,然后自己再发送一个SYN包,即SYN+ACK包
?第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,即客户端和服务器连接成功,完成三次握手
IP
IP包结构:
IP字段含义:
- 目前的协议版本号是4,因此IP有时也称作IPv4.
- 首部长度指的是首部占32bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。
- 服务类型(TOS) : 现在大多数的TCP/IP实现都不支持TOS特性.
- 总长度字段指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以字段IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节。
- 标识字段唯一地标识主机发送的每一份数据报,通常每发送一份报文它的值就会加1.
- 标志字段和片偏移字段 :在分片时使用,当发送的IP数据报的大小超过了MTU时,IP层就需要对数据进行分片,否则数据将无法发送成功。IP分片发生在IP层,不仅源端主机会进行分片,中间的路由器也有可能分片,因为不同的网络的MTU是不一样的,如果传输路径上的某个网络的MTU比远端网络的MTU要小,路由器就可能对IP数据报再次进行分片。而分片数据的重组只会发生在目的端的IP层。
- 生存时间字段设置了数据报可以经过的最多的路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置,一旦经过一个处理它的路由器,它的值就减去1.当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。
- 协议字段 :TCP/UDP
- 首部检验和字段是根据IP首部计算的检验和码。它不对首部后面的数据进行计算
- 源IP地址,占32位
- 目的IP地址,占32位
?TCP
TCP包结构:
?TCP字段含义:
- 源端口和目的端口:各占2字节,端口是传输层与应用层的服务接口。传输层的复用和分用功能都要通过端口才能实现。
- 序号:占4字节,TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
- 确认号:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
- 数据偏移/首部长度:占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位字(以4字节为计算单位)
- 保留:占6位,保留为今后使用,但目前应置为0
- 紧急URG:当URG=1时,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
- 确认ACK:只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效
- PSH(PuSH):接收TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付
- RST(ReSeT):当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
- 同步SYN : 同步SYN=1表示这是一个连接请求或连接接受报文
- 终止FIN :用来释放一个连接。FIN=1,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
- 检验和:占2字节,检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部
- 紧急指针:占16位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在报文段数据的最前面)
- 选项:长度可变。TCP最初只规定了一种选项,即最大报文段长度MSS.MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”【MSS(Maximum Segment Size)是TCP报文段中的数据字段的最大长度,数据字段加上TCP首部才等于整个的TCP报文段】
- 填充:这是为了使整个首部长度是4字节的整数倍
UDP
UDP包结构:
?UDP字段含义:
- 源端口:源端口号,需要对方回信时选用,不需要是全部置0.
- 目的端口:目的端口号,在终点交付报文的时候需要用到。
- 长度:UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部)
- 校验口:检测UDP数据报在传输中是否有错,有错则丢弃。
以太网
以太帧包结构:
?以太帧包字段含义:
- 前同步码:用来使接收端的适配器在接收MAC帧时能够迅速调整时钟频率,使它和发送端的频率相同。前同步码为7个字节,1和0交替。
- 帧开始定界符:帧的起始符,为1个字节。前6位1和0交替,最后的两个连续的1表示告诉接收端适配器:“帧信息要来了,准备接收”。
- 目的地址:接收帧的网络适配器的物理地址(MAC地址),为6个字节(48比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;如果不同,则直接丢弃。
- 源地址:发送帧的网络适配器的物理地址(MAC),为6个字节(48比特)。
- 类型:上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如:字段为0x0800时,表示将数据交付给IP协议。
- 数据:也称为效载荷,表示交付给上层的数据。以太网帧数据长度最小为46字节,最大为500字节。如果不足46字节时,会填充到最小长度。最大值也叫最大传输单元(MTU)。
- 帧检验序列FCS:检测该帧是否出现差错,占4个字节(32比特)。发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收方计算机重新计算CRC,与FCS字段的值进行比较。如果两个值不相同,则表示传输过程中发生了数据丢失或改变。这时,就需要重新传输这一帧
|