tcp基础协议
网络层
可路由协议:可跨越三层设备进行路由转发的协议,如 IP、IPX 。
不可路由协议:不可跨越三层设备,也不能进行路由转发的协议,如 NETBEUI 。
路由协议:在路由器之间传递路由信息并计算路由,为可路由协议选择转发路径的协议,如 RIP、OSPF、BGP 。
IP协议
IP协议特点
无连接性:IP协议在传输数据之前不需要建立连接。这意味着每个数据包都是独立发送的,不会受到其他数据包的影响。
尽力而为的服务:IP提供的是尽力而为的服务,即超过转发能力时直接丢弃数据包,不保证数据的可靠传输。
无序传输:IP数据包在网络中的传送是无序的,在转发过程中,不考虑到达接收端的顺序,每个数据包单独进行路由(即单独选择到达目的地的路径)。
不可靠性:IP分组传送是不可靠的,发送端只管发送数据,不关心接收端是否收到数据,IP的可靠性需要上层协议(如TCP)来解决。
IP包头结构
版本号:4位,IPv4:值为4。 包头长度:4位,IP包头长度,单位为4字节。 包头长20字节,值为5;带选项的包头长24字节,值为6。 服务类型:8位,QOS使用;前3位为IP优先级,前6位为DSCP。 报文长度:16位,IP包总长度(包头+数据),单位为字节。
标识符:16位 同一IP数据包的各个分片的标识符相同。
标志位(Flags):3位 第1位:未使用。 第2位:DF位(Don't Fragment),DF=1表示不允许对该包进行分片,DF=0表示允许分片。 第3位:MF位(More Fragment),MF=1表示后面还有分片,MF=0表示这是最后一个分片。
分段偏移量:13位 本分片数据载荷在原IP包数据载荷中的相对位置,单位为8字节。
例如,一个4000字节的IP包在MTU=1500字节下的分片: 4000字节IP包的内容长3980字节,内容的第一个字节偏移量为0。 第1个分片长1500字节,MF=1,分段偏移量0,含原包内容1480字节; 第2个分片长1500字节,MF=1,分段偏移量185,含原包内容1480字节; 第3个分片长1040字节,MF=0,分段偏移量370,含原包内容1020字节。
TTL,8位,每路由转发一次减1,用于防环。 协议:8位,标识上层协议。如TCP协议号6,UDP协议号17。 包头校验和:16位,因IP包头长度可变,用于IP包头完整性校验。
MTU(最大传输单元) 链路层MTU: 链路层能传的最大的帧,含链路层头部。 网络层MTU: 网络层能传的最大的包,含网络层头部。
路由器IP分片 数据包大于入接口MTU,Cisco设备将丢弃该包。 数据包大于出接口MTU 该包的DF=1时,丢弃该包;该包的DF=0时,将该包分片。 IP分片只在目标主机上重组。
tcp协议
TCP协议概述
Transmission Control Protocol,TCP TCP 是面向连接的,数据传输需要经过建立连接、传输数据、断开连接三个阶段。 全双工通信,数据可在同一连接上同一时间内双向流动。 TCP 提供有序的数据传输,接收端按字节对数据进行确认。 TCP 数据传输是可靠的,包头中含有校验和可对数据进行校验,并具有超时重传机制重传丢失的数据。 TCP 提供高质量的传输服务,通过滑动窗口机制实现流量控制。 TCP 适合于可靠性要求高的应用。
TCP包头结构
端口号:16位,0——65536,1024以下为知名端口号。 窗口:16位,滑动窗口的大小,单位为字节,即能接收的字节数。 报头长度:4位,TCP包头长度,单位为4字节。 校验和:16位,TCP报头和数据的校验和。
字节号 TCP把要在一个连接上发送的数据都按字节编号。通信双方的编 号是相互独立的,编号不一定要从0开始,TCP选择0~(2的32次方-1)之间的一个随即数作为第1个字节的编号。 序号 TCP把要在一个连接上发送的数据分成若干报文段,然后给每个 报文段指派一个序号,序号就是该报文段第一个字节的编号。 确认号 期望接收到的下一个字节的编号。
序号案例 假设一条TCP连接要传送一个5000字节的文件。第一个字节的编号是10001。如果该数据用5个报文段来发送,且每个报文段携带1000字节的数据,那么每个报文段的序号分别是什么?
tcp包头结构
编码位(TCP Flag) FIN:结束标志;为1时,请求断开连接。 SYN:同步标志;为1时,请求建立连接。 RST:复位标志;为1时,请求重新建立TCP连接。 PSH:通知接收端立即将数据交给用户进程,不要停留在缓存中,等待更多的数据。 ACK:确认标志;确认号有效位,表明该数据包包含确认信息。 URG:紧急标志;紧急指针有效位,与16位紧急指针配合使用。
tcp工作机制
TCP连接建立——TCP MSS TCP MSS是TCP的一个重要选项,TCP数据分段的最大长度,该参数在三次握手时发给对方。
tcp连接断开--四次断开机制
TCP流量控制
滑动窗口机制
TCP为每个方向的数据传送都使用两个窗口(发送窗口和接收窗口),共4个窗口。
TCP通过强制发送方和接收方不断调整窗口大小,来实现流量控制。
出现拥塞时,窗口减半;
传输稳定时,窗口慢慢变大。
tcp的可靠性主要是通过确认应答+超时重传来实现的。
1 确认应答机制
先看发送方:在没有滑动窗口机制之前,发送方一次只能发送一段报文,且每次发送完后要等待接收方的ACK确认,只有在收到接收方的ACK确认应答后,才能将发送缓冲区里对应的数据释放掉,并开始发送第二段报文。如果在规定时间内未收到ACK确认,则尝试重传这段报文(超时重传机制)。 再看接收方:接收方每次接收到报文后,都要给发送方返回一个确认应答报文ACK,告知对方已正确接收数据,期望下次收到报文段的起始序列号是ack。
udp协议
UDP包头结构