TCP协议------传输与控制协议

 1.0TCP协议头部格式

 源/目端口:表示数据从哪个应用程序发送,发送到哪个应用程序去(16bit/2B)


32位序列号:发送的数据按照一个字节一个编号存放进去,用来标识这是第几个报文(seq)每一个报文都要有


32位确认序列号:用于给对方的响应,值为收到TCP报文段的序号值加1(有数据要加上数据)【表示当前的应答报文针对的是哪个消息进行的确认应答 (Ackeq)】两种含义一:提示我下一个想要收到的报文序列号,二:我已经收到的报文。(字节流)


4位TCP报头长度---数据偏移(数据包文大小):表示TCP头部有4个字节(32位),所以TCP头部最大长度为15*4=60

6位标志位

URG:紧急指针是否有效
ACK:确认位,当该标记位置为1时,确认序列号有意义
PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走
RST:对方要求重新建立连接,把携带RST标识的称为复位报文段
SYN:同步位,是TCP三次握手建立通道的标记
FIN:通知对方,要关闭连接了,把携带FIN标识的称为结束报文

16位窗口大小:进行流量窗口控制

16位校验和:检验数据是否一致

16位紧急指针(与URG结合使用):标识哪部分数据是紧急数据

TCP分段:因为IP分段后,TCP协议无法保证数据可靠性传输;故而使用TCP协议封装的文件不能IP分片,但是MTU规定了最大传输字节,所以要进行TCP分段

    MSS---最大传输段===MTU-IP头部-TCP头部

1.1可靠性

 确认机应答制

向对方发送一个数据报,对方要返回一个确认应答的数据报 实现的方式:序号和确认序号保证了响应应答针对的是哪一条消息的应 答

 超时重传机制

没有收到确认应答的数据报文,就需要发送端重新发送 

第一种:发送数据时候就已经发生了丢包,这个时候就要重新发送数据报文

 第二种:也可能是因为ACK丢包了,这种情况,服务端可能会接收到许多重复的数据,TCP内部有去重操作,接收的数据会放在操作系统内核的接收缓冲区中,接收缓冲区可以是一个内存空间,视为是一个阻塞队列,对于收到的数据,TCP会根据序号检查这个数据是不是在缓冲区中已经存在,如果存在则丢弃,如果不存在则放进去

排序机制

传输数据段时,被分为多个报文,从不同路径传输,最终达到目的地的顺序被打乱,需要根据序列号字段进行重新排序。

流控机制(滑动窗口机制)

接收端主机处理数据的速度有限,如果发送端发送数据太快,导致接收端缓冲区被填满,这时,发送端继续发送数据的话就会造成丢包,继而引起丢包重传等一些列连锁反应,因此TCP协议根据接收端接收数据的能力,来决定发送端发送数据的速度,这个机制就叫作流量控制 

接收端将自己剩余缓冲区大小存入TCP头部中的“16位窗口大小”字段 ,通过ACK通知发送端
窗口大小越大,说明网络吞吐量越高
发送端根据接收到这个窗口的大小,控制自己的发送速度
如果接收缓冲区满了,就会将窗口设置为0,这时,发送端不在发送数据,而是定期的发送一个窗口探测报文(只是为了知道窗口的大小),让接收端将窗口大小告诉发送端

面向连接(三次握手,四次挥手)

三次握手
四次挥手 

整个过程 

MSL----120S ,一个数据包在网络传递的最大时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值