TCP/IP详解 读书笔记:TCP:传输控制协议
TCP的服务
TCP为应用层提供一种面向连接的、可靠的字节流服务。
一个TCP连接中,仅有两方进行彼此通信,所以广播和多播不能用于TCP。
TCP通过以下方式提供可靠性:
- 应用数据被切割为TCP认为最适合发送的数据块。由TCP传递给IP的信息单位称为报文段或段。
- TCP发出一个段后启动一个定时器,用以等待目的端确认收到该报文段,如果没有及时收到一个确认响应,将重发该报文段。
- 当TCP收到发自TCP连接另一端的数据将会发送一个确认,这个确认不是立即发送,而是会进行一点延迟。
- TCP将保持首部和数据的检验和。目的是检验数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将会丢弃报文段和不确认收到此报文段,发送端将会重发该报文段。
- 如有必要,TCP将会对收到的数据进行重新排序,并将收到的数据以正确的顺序交给应用层。
- TCP接收端会自动丢弃重复的数据。
- TCP提供流量控制。
TCP的首部
TCP数据被封装在一个IP数据报中:
TCP包首部图:
TCP首部中有6个标志比特,简单介绍其用法:
- URG:紧急指针有效;
- ACK:确认序号有效;
- PSH:接收方应该尽快将此报文段交给应用层;
- RST:重建连接;
- SYN:同步序号用来发起一个连接;
- FIN:发送端完成发送任务;
TCP首部通常大小为20个字节。
当建立一个新连接时,SYN标志变为1.序号字段包含由该主机选择的该连接的初始序号ISN。该主机将会发送的第一个字节需要就为此ISN加一,因为SYN标志消耗了一个序号。
每一个传输的字节都被计数,确认序号包含发送的一端所确认的一端所期望收到的下一个序号。确认序号是上次已经成功收到的数据字节序号加一。只有ACK标志为1时确认序号字段才有效。
TCP可以看做一个没有选择确认或否认的滑窗协议,TCP首部中的确认序号表示发送方已经成功收到字节,不包含确认序号所指字节
TCP/IP详解 读书笔记:TCP:传输控制协议的更多相关文章
- TCP/IP详解 读书笔记(一):概述
分层 网络协议通常分不同层次进行开发,每一层负责不同的职责,一个协议簇指的是一组不同层次上的多个协议的组合. TCP/IP通常被认为是一个四层协议系统: 链路层:主要是处理与电缆或其他传输媒介的物理接 ...
- TCP/IP详解学习笔记 这位仁兄写得太好了
TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...
- TCP/IP详解学习笔记- 概述
TCP/IP详解学习笔记(1)-- 概述1.TCP/IP的分层结构 网络协议通常分不同层次进行开发,每一层分别负责不同的同信功能.TCP/IP通常被认为是一个四层协议系统. 如图所 ...
- TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)
TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记 这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...
- 【转】TCP/IP详解学习笔记(二)
TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据 ...
- 【转】TCP/IP详解学习笔记(一)
TCP/IP详解学习笔记 这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...
- TCP/IP详解学习笔记
TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...
- TCP/IP详解学习笔记(9)-TCP协议概述
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...
- TCP/IP详解学习笔记(3)-- IP:网际协议
1.概述 IP是TCP/IP协议族中最为核心的协议.所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输. IP提供不可靠,无连接的数据报传送服务. 不可靠:它不能保 ...
随机推荐
- [转]浮点运算decimal.js
开发过程中免不了有浮点运算,JavaScript浮点运算的精度问题会带来一些困扰 JavaScript 只有一种数字类型 ( Number ) JavaScript采用 IEEE 754 标准双精度浮 ...
- doT.js模板用法
前提:引入doT.min.js: <script type="text/javascript" src="js/jquery.js"></sc ...
- No shutdown animation in the electricity display only 1%
低电量自动关机时无关机动画 低电量自动关机时无关机动画1. 问题描述2. 分析3. solution4. 总结 1. 问题描述 DEFECT DESCRIPTION: No shutdown anim ...
- rocketmq实现延迟队列精确到秒级实现方案1-代理实现
简单的来说,就是rocketmq发送消息到broker的时候,判断是否定时消息, 如果是定时消息,将消息发送到代理服务(这个是一个独立的服务,需要自己开发,定时地把消息发送出去), 当然了消息用什么来 ...
- CAS学习笔记四:CAS单点登出流程
CAS 的登出包含两种情况,一种是CAS客户端登出,另一种是CAS单点登出,使用流程图说明这两者的不同.(一图胜千言) 总结自官方文档 CAS客户端登出流程 如图,客户端的登出仅仅是过期当前用户与客户 ...
- 问题记录——BigDecimal保留两位小数及格式化成百分比
1.函数总结 BigDecimal.setScale()方法用于格式化小数点 setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOW ...
- android ndk下没有pthread_yield,好在std::this_thread::yield()可以达到同样的效果
一个多线程的算法中,发现线程利用率只有47%左右,大量的处理时间因为usleep(500)而导致线程睡眠: 性能始终上不去. 把usleep(500)修改为std::this_thread::yiel ...
- Web开发底层是Servlet
SpringMVC:是基于spring的一个框架,实际上就是spring的一个模块,专门是做web开发. 可以理解成servlet是一个升级 web开发底层是servlet,框架是在servlet基础 ...
- ssh 信任关系无密码登陆,清除公钥,批量脚本
实验机器: 主机a:192.168.2.128 主机b:192.168.2.130 实验目标: 手动建立a到b的信任关系,实现在主机a通过 ssh 192.168.2.130不用输入密码远程登陆b主机 ...
- 使用Termux并与ubuntu建立ssh连接
什么是Termux? Termux是一个Android终端仿真器和Linux环境应用程序,直接工作,无需根目录或设置.一个最小的基本系统被自动安装-额外的软件包可以使用APT软件包管理器来使用.不需要 ...