Tcp服务
1.Tcp是面向连接的,交换数据之前必须建立连接。
2.与UDP不同,应用程序产生的数据报长度将保持不变。
3.TCP发出一段后,后启动一个定时器,等待目的端确认收到这个报文段。如果没收到确认,将重发。
4.如果必要,TCP会对收到的数据进行重新排序。
5.如果IP数据报发生重复,TCP接收端必须丢弃重复的数据。
6.TCP还能提供流量控制。TCP接收端只允许另一端发送接收端缓冲区所能接纳的数据。
Tcp首部
6位标志的类型
U R G 紧急指针( u rgent pointer)有效(见2 0 . 8节)。
A C K 确认序号有效。
P S H 接收方应该尽快将这个报文段交给应用层。
R S T 复位连接。(在重传多次失败时会发)
S Y N 同步序号用来发起一个连接。这个标志和下一个标志将在第1 8章介绍。
F I N 发端完成发送任务。
==============TCP连接的建立和关闭============================
连接建立:
(1)svr4发起SYN段,序号S1为1521,最大分段为1024字节
(2)bsdi发起ACK端响应,序号S2是3521,响应A1为S1+1
(3)svr发起ACK应答,A2=S2+1
连接终止
因为TCP是双工的,所以要分两次关闭。
(1)客户端向服务端发起关闭请求FIN
(2)服务端向客户端发起响应ACK
(3)服务端向客户端发起响应关闭请求FIN
(4)客户端响应ACK
解释下MSS:
报文段越大允许每个报文段传送的数据就越多,相对I P和T C P首部有更高的网络利用率。当T C P发送一个S Y N时,或者是因为一个本地应用进程想发起一个连接,或者是因为另一端的主机收到了一个连接请求,它能将M S S值设置为外出接口上的M T U长度减去固定的I P首部和T C P首部长度。
上图协商后的MSS为256,可想而知网络MTU为256+40=296
TCP连接打开关闭对应的状态
(1)所有状态都是端在发送消息后处于的状态。
(2)需要注意的是最后一个TIME_WAIT
TIMEWAIT 是一个超时等待状态,用于等待最后一个ack能发送完毕。等待时间一般为2MSL(两倍报文最大生存时间),这样做的好处是确保报文能够被发送结束。如果2MSL内ack还未送达,last_ack的一方会再次发送FIN,这样就保证了最后一个ACK是可靠的。
TOBECONTINUE