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提供不可靠,无连接的数据报传送服务. 不可靠:它不能保 ...
随机推荐
- Maven自定义jar包名
一.默认命名 <finalName>${project.artifactId}-${project.version}</finalName> 二.自定义包名 <build ...
- 【记录一个问题】笔记本ThinkPad X1-Extreme安装ubuntu 18后,更新nvidia显卡驱动后出现显示问题,无法再登录
如题 更新的过程如下: sudo ubuntu-drivers autoinstall sudo reboot 后续准备在recovery模式中尝试删除驱动.
- 在DigitalOcean vps中安装vnstat监控流量,浏览器打开php代码。。。
由于DigitalOcean中没有发现可以观察已用流量的功能,有想知道自己的流量使用情况,所以安装了vnstat. 安装过程十分简单,见百度经验,官方主页等. 1.安装完vnstat后,直接命令vns ...
- Autofac实现拦截器和切面编程
Autofac.Annotation框架是我用.netcore写的一个注解式DI框架,基于Autofac参考 Spring注解方式所有容器的注册和装配,切面,拦截器等都是依赖标签来完成. 开源地址:h ...
- redis如何避免释放锁时把别人的锁释放掉
场景:假如线程A获取分布式锁进入方法A,由于某种原因Hang住了 到了指定时间释放锁,这个时候线程B进入得到锁,这个时候线程B很顺利完成业务逻辑操作,然后释放掉锁,就在这个时候线程A开始继续往下执行代 ...
- gin框架中请求参数的绑定与多数据格式处理
package main import ( "fmt" "github.com/gin-gonic/gin" ) // gin框架提供给开发者表单实体绑定的功能 ...
- Casbin + Gin + Gorm 学习探索
Casbin 是一个强大的,开源的访问控制框架,权限管理机制支持多种访问控制模型: 并且支持多种编程语言: 文档地址:https://casbin.org/docs/zh-CN/overview Gi ...
- DB2重组表失败处理办法
set integrity for XXX all immediate unchecked reorg table XXX allow no access 如set integrity for a a ...
- 手把手教你用Strace诊断问题
手把手教你用Strace诊断问题 发表于2015-10-16 早些年,如果你知道有个 strace 命令,就很牛了,而现在大家基本都知道 strace 了,如果你遇到性能问题求助别人,十有八九会建议你 ...
- 测试udp端口
yum -y install nc 在a机器上执行: nc -ul 1080 在b机器上执行:nc -u 服务器ip 1080 a机器可以接收到报文则代表端口正常.