TCP
2016-03-05 20:09
507 查看
面向链接、可靠的字节流服务,全双工
1、头部,socket也指一个IP、端口对
2、三次握手 同时打开
3、连接超时 SYN间隔递增,大约75秒放弃
4、MSS TCP传往另一端的最大块数据的长度
只在SYN出现,MSS限制数据包最大值,滑动窗口与缓冲期有关
5、四次挥手 TIME_WAIT
6、状态变迁图
7、backlog 三次握手完成,应用层还没accept,积压队列长度
8、tcp确认延迟机制 ack不立即发送,数据捎带ack
9、nagel算法,任何时刻网络仅有一个未确认的tcp数据包,可以解决网络拥塞
1)达到MSS
2)包含FIN
3)超时
4)未启用nagle
cork算法将小数据包集中发送
10、滑动窗口 流量控制
11、tcp拥塞控制采用拥塞窗口(cwnd)控制
拥塞依据,即重传:
1.把ssthresh降低为cwnd值的一半
2.把cwnd重新设置为1
3.重新进入慢启动过程。
慢启动 当新建连接时,cwnd初始化为1个最大报文段(MSS)大小,发送端开始按照拥塞窗口大小发送数据,
每当有一个报文段被确认,cwnd就增加1个MSS大小
拥塞避免 慢启动达到一定门限ssthresh不再指数级上涨,而是加法增加,慢慢达到cwnd最佳值
快速重传:如果一连串收到3个或3个以上的重复ACK,就非常可能是一个报文段丢失了。
于是我们就重传丢失的数据报文段,而无需等待超时定时器溢出。
快速恢复:接下来执行拥塞避免算法
12、tcp四个定时器:重传定时器、坚持定时器、保活定时器、2MSL定时器
RTT往返时间 传播时间+未端处理时间+路由处理缓存排队时间
坚定定时器:当TCP服务器收到了客户端的0滑动窗口报文的时候,就启动一个定时器来计时,并在定时器溢出的时候向向客户端
查询窗口是否已经增大,如果得到非零的窗口就重新开始发送数据,如果得到0窗口就再开一个新的定时器准备下一次查询。
糊涂窗口综合症
保活定时器:Keepalive SO_KEEPALIVE选项
每隔2小时(可以调整)发送保活探测报文
13、优化tcp性能
路径MTU发现
窗口扩大因子,序号回绕保护
为事务用的tcp扩展,即T/TCP
1、头部,socket也指一个IP、端口对
2、三次握手 同时打开
3、连接超时 SYN间隔递增,大约75秒放弃
4、MSS TCP传往另一端的最大块数据的长度
只在SYN出现,MSS限制数据包最大值,滑动窗口与缓冲期有关
5、四次挥手 TIME_WAIT
6、状态变迁图
7、backlog 三次握手完成,应用层还没accept,积压队列长度
8、tcp确认延迟机制 ack不立即发送,数据捎带ack
9、nagel算法,任何时刻网络仅有一个未确认的tcp数据包,可以解决网络拥塞
1)达到MSS
2)包含FIN
3)超时
4)未启用nagle
cork算法将小数据包集中发送
10、滑动窗口 流量控制
11、tcp拥塞控制采用拥塞窗口(cwnd)控制
拥塞依据,即重传:
1.把ssthresh降低为cwnd值的一半
2.把cwnd重新设置为1
3.重新进入慢启动过程。
慢启动 当新建连接时,cwnd初始化为1个最大报文段(MSS)大小,发送端开始按照拥塞窗口大小发送数据,
每当有一个报文段被确认,cwnd就增加1个MSS大小
拥塞避免 慢启动达到一定门限ssthresh不再指数级上涨,而是加法增加,慢慢达到cwnd最佳值
快速重传:如果一连串收到3个或3个以上的重复ACK,就非常可能是一个报文段丢失了。
于是我们就重传丢失的数据报文段,而无需等待超时定时器溢出。
快速恢复:接下来执行拥塞避免算法
12、tcp四个定时器:重传定时器、坚持定时器、保活定时器、2MSL定时器
RTT往返时间 传播时间+未端处理时间+路由处理缓存排队时间
坚定定时器:当TCP服务器收到了客户端的0滑动窗口报文的时候,就启动一个定时器来计时,并在定时器溢出的时候向向客户端
查询窗口是否已经增大,如果得到非零的窗口就重新开始发送数据,如果得到0窗口就再开一个新的定时器准备下一次查询。
糊涂窗口综合症
保活定时器:Keepalive SO_KEEPALIVE选项
每隔2小时(可以调整)发送保活探测报文
13、优化tcp性能
路径MTU发现
窗口扩大因子,序号回绕保护
为事务用的tcp扩展,即T/TCP
相关文章推荐
- Android 6.0删除Apache HttpClient相关类的解决方法
- C# 网络与Cmd命令
- iOS之 TCP socket网络编程 demo
- HTTPS密码截取
- 电脑双网卡同时上内外网亲自实践教程
- 局域网HTTP密码截取
- 客户端与服务端Post报文构造请求及Http Post与Get请求方法
- AJAX - 创建 XMLHttpRequest 对象
- TCP组包问题及处理方法
- HTTP常用状态码
- Volley网络请求的简单封装使用
- Linux http post 请求 实例
- Python http请求(读取代理ip列表)
- 网络层
- 【网络流24题】魔术球问题
- tcp udp 实例
- 0031TCP/IP协议之三次握手图文详解
- 【网络流24题】飞行员配对方案问题
- websocket获取httpsession报NullPointerException解决办法
- HttpClient使用详解 (如何上传文件到文件服务器)