系列文章目录
第二章计算机网络传输层之面向连接传输协议-TCP计算机网络传输层之TCP协议
面向连接传输协议-TCP
TCP概述
TCP概述:RFCs-793,1122,1323,2018,2581
TCP段结构
传输层处理的基本对象是段segments
sequence number 序列号 ack的序列号不是段的编码,而是利用数据的字节数来计算
U:紧急数据一般不使用 A:标志位,来指示是否有效的ACK P:利用该标志位立刻把数据推上层,一般不用
RSF:连接的建立和拆除的标志位
Receive window:接受窗口的大小,所能接受字节的数目,流量控制的
checksum:Internet校验和
TCP:序列号和ACK
1K个字节的数据拆成2个segment时,第二个segment不是2也不是1(第一个序列号为1第二个为2,第一个为0,第二个为1)
而是500或501
所以是字节的编好而不是segment的个数。
42是建立连接随机选择的,43之前所有字节都正确接收到。
telnet远程登录应用,使用的为TCP协议
远程登录到telnet上的一台主机上,你这边发送一个字符,那边收到后会回传。
TCP可靠数据传输
TCP可靠数据传输概述(不考虑拥塞控制和流量控制和重复ACK)
TCP RTT和超时
估计的RTT是EstimatedRTT
DEVRTT是描述EstimatedRTT变化范围(大还是小)
TCP发送方事件
TCP发送端的程序
TCP重传示列
由于TCP是累积确认机制,所以会发ACK120而不是ACK100
TCP是累积确认机制
TCP接收方
TCP ACK生成:RFC1122,RFC2581
cumulative ACK 累计确认ACK,确认两个段。
duplicate ACK重复ACK,指示你希望的ACK
TCP快速重传机制
TCP快速重传算法
TCP流量控制
左边,IP层(网络层)传输进来RevBuff,然后交给上层,应用进程处理。
蓝色区域表示可以接受数据的Buff
如果Rcvwindow=0,发送方被告知不能发送了,即便以后接收方处理完后,发送方也无法知道该信息了,即无法发送。(断开连接了)
所以,TCP机制中即使Rcvwindow=0,发送方依旧可以发送很小的段,因为进程也在处理中。
TCP连接管理(三次握手)
SYN报文段不携带任何数据,SYN携带SYN位-置为1,表示建立一个连接,传递客户机选择的初始序列号
服务器分配缓存,选择自己的初始的列号并且告知客户端,同时告诉客户机连接请求已经收到
客户机收到SYNACK后回复ACK报文段,这个时候SYN位-不置为1了,这步告诉服务器,我收到你同意我建立连接的报文段,该报文段可以包含数据
为什么要3次握手,2次行不行?
TCP连接管理:建立
在三次握手的第2次时候,服务器会建立缓存,如果第三次没有握手,服务器资源会保留一段时间,直到等它确认该连接不会建立了,收不到ACK,资源才会释放。
如果成千上万台电脑同时接入,然后第二次握手,客户端不发送ACK,服务器会怎么样?
TCP连接管理:关闭
客户机和服务器都可以发送关闭请求,多数是客户端发送。
等待阶段是为了确保服务器那端已经正确关闭,释放资源。