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 ...
随机推荐
- BufferedReader 中的 readLine()
BufferedReader中的readLine()方法,API解释如下: Reads a line of text. A line is considered to be terminated by ...
- editplus工具支持sql高亮提示
editplus默认不识别sql关键件,添加文件使其对sql高亮提示. 首先就是要自己编写一段代码,存为.stx 文件(例如sql.stx) 然后在editplus的菜单栏 工具-> 配置用户工 ...
- 第四章ppt课后作业
字符串加密解密: 源代码: package tutorial04String; import javax.swing.JOptionPane; public class Wordsecret { pu ...
- JAVA EE中session的理解
转自[互动百科]http://www.baike.com/wiki/Session Session Session:在计算机中,尤其是在网络应用中,称为“会话”.Session直接翻译成中文比较困 ...
- LinQ的查询操作
LinQ的高级查询:-------------------在car表格进行练习操作: 一.模糊查询:1.在后台代码:(Contains)List<car>list=con.car.wher ...
- 一个C#语法高亮插件
语法高亮对程序员阅读代码来说有着不小的帮助,虽然VisualStudio本身支持C#语法高亮,但也只是对关键字.类名.字符串等少数元素加了标记,而我们代码中主题:变量.函数.属性.事件等都没有进行高亮 ...
- jquery实现章节目录效果
<html><head><title>jquery实现章节目录效果</title> <script type="text/javascr ...
- 偶的《javascript框架设计》终于出版
#cnblogs_post_body p{ text-indent:2em!important; } 历时两年多,我的书终于付梓出版了.应各方面的要求,写软文一篇,隆重介绍一下此书对各位程序员的钱途有 ...
- scala-类
---恢复内容开始--- 随笔记录scala中,有哪些类,如何定义一个类,有哪些注意点. 一,scala中有哪些类? 1,简单类 class 2,单例模式 object 3,伴生类 4,case cl ...
- Android菜鸟成长记9 -- selector的用法
在项目开发的时候,由于系统给出的控件不够美观,因此开发时领导常常要我更改下界面,用美工给的图片取代系统图片.开始时,我只是给按钮等设置一下背景图片,这样做虽然美观了,但界面看起来却比较死板,比如用户点 ...