TCP/IP详解系列 --- 概念总结02
TCP复位报文段(RST)的用途:
1.当客户端程序访问不存在的端口时,目标主机将给它发送一个复位报文段;收到复位报文段的一端应该关闭连接或者重新连接,而不能回应这个复位报文段。
2.当客户端程序向服务器的某个端口发起连接,而该端口仍被处于TIME_WAIT状态的连接所占用时,客户端程序也将收到复位报文段。
3.异常终止连接:给对方发送一个复位报文段(使用socket选项SO_LINGER),一旦发送了复位报文段,发送端所有排队等待发送的数据都将被丢弃。
4.如果客户端(或服务器)往处于半打开状态的连接写入数据,则对方将回应一个复位报文段;
TCP交互数据流:交互数据仅包含很少的字节,使用交互数据的应用程序(或协议)对实时性要求较高。如telnet, ssh;
TCP成块数据流:长度通常为TCP报文段所允许的最大数据长度,使用成块数据的应用程序(或协议)对传输效率要求高。比如ftp;
Nagle算法:
原理:Nagle算法要求一个TCP连接的通信双方在任意时刻都最多只能发送一个未被确认的TCP报文段,在该TCP报文段的确认到达之前不能发送其他TCP报文段。另一方面,发送方在等待确认的同时收集本端需要发送的微量数据,并在确认到来时以一个TCP报文段将它们全部发出。
优点:01.极大的减少了网络上的微小TCP报文段数量; 02.自适应性:确认到达得越快,数据也就发送得越快;
备注:
1.Nagle算法常与另一个TCP算法联合使用: ACK延滞算法,即TCP在接收到数据后不立即发送ACK,而是等待一小段时间(典型值50~200ms),然后才发送ACK;TCP期待在这一小段时间内自身有数据发送回对端,被延滞的ACK就可以这些数据捎带,从而节省掉一个TCP分节。
2.TCP默认开启Nagle算法,可以通过TCP_NODELAY套接字选项关闭。
需要考虑关闭Nagle算法情形:对于其服务器不在相反方向产生数据以便携带ACK的客户来说,或者对于以若干小片数据向服务器发送单个逻辑请求的客户,Nagle算法和ACK延滞算法可能会导致客户察觉到明显延迟;
3.接收方不应该过分推迟发送确认,否则会导致发送方不必要的重传,这反而浪费了网络的资源;TCP标准规定,确认推迟的时间不应超过0.5秒,若收到一连串具有最大长度的报文段,则必须每隔一个报文段就要发送一个确认。
4.当传输大量大块数据时,发送方会连续发送多个TCP报文段,接收方可以一次确认所有这些报文段。而发送方在收到上一次确认后,能连续发送的TCP报文段数量,是由接收通告窗口和拥塞窗口的大小决定的。
PUSH标志:发送方使用该标志通知接收方将所接收到数据全部提交给接收进程。
带外数据:比普通数据有更高的优先级,它应该总是立即被发送,而不论发送缓冲区中是否有排队等待发送的普通数据,用于迅速通告对方本端发生的重要事件。
TCP超时重传:TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动,如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置定时器。
TCP拥塞控制
包括四个部分:慢启动、拥塞避免、快速重传、快速恢复
TCP/IP详解系列 --- 概念总结02的更多相关文章
- TCP/IP详解系列 --- 概念总结01
UDP协议 .vs. TCP协议: 原理上:(TCP报文段. vs . UDP用户数据报) TCP协议的特性: TCP是面向连接的运输层协议,应用程序在使用TCP协议之前,必须先建立TCP连接. ...
- 《TCP/IP详解 卷1:协议》系列分享专栏
<TCP/IP详解卷1:协议>是一本详细的TCP/IP协议指南,计算机网络历久不衰的经典著作之一. 作者理论联系实际,使读者可以轻松掌握TCP/IP的知识.阅读对象为计算机专业学生.教师以 ...
- 『TCP/IP详解——卷一:协议』读书笔记——10
2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...
- TCP/IP详解学习笔记
TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...
- TCP/IP详解 (转)
TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...
- 《TCP/IP详解卷1:协议》第1章 概述-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- TCP/IP详解--连接状态变迁图CLOSE_WAIT
终止一个连接要经过4次握手.这由TCP的半关闭(half-close)造成的.既然一个TCP连接是全双工(即数据在两个方向上能同时传递,可理解为两个方向相反的独立通道),因此每个方向必须单独地进行关闭 ...
- TCP IP详解(转)
大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 网络七层协议简称OSI.TCP/IP刨除了物理层,并把上三层(会话层.表示层和应用层)统称 ...
- 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
随机推荐
- Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)
本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...
- IAR调节字体大小
在主面板上点击tools->Options,然后点开Editor,选择下面的Colors and Fonts选项,最后选右上方的Font,选择要设置的字体就OK了.
- 转 Jmeter之Bean shell使用(一)
一.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanS ...
- 第四章ppt课后作业
字符串加密解密: 源代码: package tutorial04String; import javax.swing.JOptionPane; public class Wordsecret { pu ...
- 巧用vsprintf将浮点数等转化字符串
直接上代码 #include <stdarg.h> ]; int vspf(char *fmt, ...) { va_list argptr; int cnt; va_start(argp ...
- [转][译]关于CSS中的float和position和z-index
原文:http://learn.shayhowe.com/advanced-html-css/detailed-css-positioning 当构建页面排版时,有不同的方法可以使用.使用哪一种方法取 ...
- EUI ViewStack实现选项卡组件
一 TabBar+ViewStack实现 这个教程确实没看懂...贼麻烦... 二 RadioButton+ViewStack 在exml中拖动组件RadioButton和ViewStack 设置e ...
- EM算法(4):EM算法证明
目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法运用 EM算法(4):EM算法证明 EM算法(4):EM算法证明 1. 概述 上一篇博客我们已经讲过 ...
- html信息提示框
1.span <span title="提示信息" data-container="body" data-toggle="inf" d ...
- c#轻松实现磁性窗口
/// <summary>/// 磁性窗体函数/// </summary>/// <param name="form">窗体控件(一般传this ...