tcp协议相关

来源:互联网 发布:人人网账号共享 知乎 编辑:程序博客网 时间:2024/05/17 09:13

TCP提供面向连接的服务,在传送数据之前必须先建立连接,数据传输结束后要释放连接。TCP不提供广播和多播服务。由于TCP提供可靠的、面向连接服务因此不可避免的增加了很多开销,如确认、流量控制、计时器以及连接管理等。这不仅使协议首部数据单元增大很多,还要占用很多处理机资源

TCP可靠性表现

1.基于请求应答机制
2.保证报文按序到达
3.丢包重传
4.面向连接的——在操作系统中应该有对应的数据结构描述连接
5.通过滑动窗口进行流量控制
6.超时重传
7.询问对方滑动窗口的容量
8.网络拥塞避免

紧急URG

当URG=1时表明紧急指针字段有效告诉系统此报文段中有紧急数据应尽快传送(相当于高优先级数据),而不要按照原来的顺序传送。比如已经发送了很长的数据但后来发现了一些问题需要取消发送程序的执行(Ctrl +C)如果不是呀紧急指针等发送完那么这两个字符将存储在接收TCP缓存末尾只有所有的数据被处理完才会将这两个字符交付接收方的应用进程,这样不仅浪费时间还浪费网络资源
在URG有效时在紧急数据后的数据任然是普通数据所以URG要与紧急指针配合使用指定紧急数据在报文中的偏移是目标进程快速定位到紧急数据

推送PSH

当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即得到对方的响应在这种情况下TCP可以使用推送(push)操作。这时发送方吧PSH置为1并立即创建一个报文段发送出去接收方在收到PSH=1的报文段就尽快的交付应用进程而不等到整个缓存 都填满在向上交付

TCP中的各种定时器

超时重传定时

TCP采用一种自适应的算法,他记录一个报文的发出时间,以及收到确认的时间,两个时间之差就是报文段的往返时间RTT,TCP保留了RTT的加权平均往返时间RTTs
这里写图片描述
超时重传时间RTO
这里写图片描述
这里写图片描述

持续定时器persistent timer

只要TCP连接的一方收到对方的零窗口通知,就启动持续定时器若持续定时器到期就发送一个零窗口的探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值,如果窗口任然是0那么收到这个报文段的一方就重新设置持续定时器。如果窗口不是0那么死锁的僵局就可以打破

保活计时器:keeplive timer

每当服务器收到客户的信息,就将keeplive timer复位,超时通常设置2小时,若服务器超过2小时还没有收到来自客户的信息,就发送探测报文段,若发送了10个探测报文段(没75秒发送一个)还没收到响应,则终止连接。

时间等待计时器:Time_Wait Timer

在连接终止期使用,当TCP关闭连接时,并不认为这个连接就真正关闭了,在时间等待期间,连接还处于一种中间过度状态。这样就可以时重复的fin报文段在到达终点后被丢弃,这个计时器的值通常设置为一格报文段寿命期望值的两倍。

TCP连接的建立与释放

三次握手

这里写图片描述
在三次握手时并不仅是建立连接还有协商双方的滑动窗口大小协商双方的MSS(最大报文段长度)

四次挥手

这里写图片描述

原创粉丝点击