1.TCP协议的特点
(1).TCP是面向连接的传输层协议。
(2).TCP连接只能有两个端点,TCP是点到点的。
(3).TCP提供可靠的交付服务,保证 传输的数据无差错,不可重,有序,不丢失。
(4).TCP提供全双工通信,TCP允许通信双 方任何时间都能发送数据,因此TCP两端都设有发送和接收缓存。
(5).TCP是面向字节流的。
2.TCP报文段:TCP报文段既可以用来运载数据,也可以用来建立连接,释放连接和应答。
数据偏移占1字节,表示TCP起始位置距结束为止有多远。
保留字段占6位。
(1)分别为:
-------------------------------------------------------------------------------------------------------------------------------------------------------
紧急位:URG 当URG为1的时候表示紧急指针有效,表示数据从第一个字节到紧急指针所指字节就是紧急数据。
确认位:ACK,当ACK有效时,确认位有效,TCP规定TCP传输数据时ACK必须为1.
推送位:PSH,收到PSH为1时,就尽快地向应用层交付数据。
复位位:RST,当RST为1时,表明发生差错,需要重传。
同部位:SYN,SYN=1时表明这是一个链接请求或者连接接收报文。
终止位:FIN,用来释放一个连接。
-------------------------------------------------------------------------------------------------------------------------------------------------------
窗口字段 占2字节。他指出允许对方发送的数据量。
(3).TCP连接管理:
需要解决以下三个问题
(1).要是每一方都能够 确知对方的存在。
(2).允许双方协商一些参数。
(3).能够对实体运输资源进行分配。
TCP建立连接与释放连接:
三次握手:
1.SYN = 1,seq = x。
2.ACK=1,seq=u,ack=x+1。
3.ACk=1,seq=x+1,ack=u+1。
四次挥手:
1.FIN=1,seq=u。
2.ACk = 1,seq=v,ack=u+1。
3.FIN=1,seq=w,ack=u+1。
4.ACK=1,seq=u,ack=w+1。
TCP的可靠传输:
1.序号:TCP首部的序号字段用来保证数据能够有序的提交给应用层,TCP把数据当做无结构但有序的字节流。TCP连接中传送的数据流中每一个字节都编上一个序号。序号字段的值是本报文段所发送的数据的第一个字节的序号。
2.确认:
TCP首部的确认号是希望接收对方下一次发送的报文段的数据的第一个字节的序号。
3.重传:
有两张情况会导致TCP对报文段进行重传:超时和冗余ACK。
(1).超时
TCP每发送一个报文段,就对这个报文段设置一次计时器。只要在规定时间到了还没收到确认,就要重传。
(2).冗余ACK
TCP规定如果接收方没接收到期望序号,则会发送一个冗余ACK,如果发送发就收到3个冗余ACk,就可以认为期望序号的报文已经丢失。