TCP/IP详解 笔记十三
TCP协议(一) 概述
特点
1, 面向连接可靠的字节流服务
2, 只有两方通信,不能用于广播或多播
3, 应用数据被TCP分隔为最合适发送的数据段,传给IP协议栈
4, 发送端并启动定时器,超时重传
5, 接收端需要发送确认
6, 检验和错误的数据包将被丢弃,并不确认收到此数据包(希望超时重传)
7, 重新排序,因为TCP数据包是IP报文的数据,而ip协议不保证数据按顺序到达,所以需要重新排序。
8, 同理,ip包会发生重复,所以TCP需要排重。
9, 流控制,TCP的每一方有固定大小的缓冲空间,接收端只允许发送端发送能容纳的数据。
10, 提供全双工服务。
字节流服务

TCP报文结构


字段解释:
插口对:IP头部的ip+tcp头部的端口唯一确定一个应用程序,而相对的插口称为插口对唯一确定tcp双方。
序号:标识发端向收端发送的数据字节流,表示这个报文中的第一个数据字节。序号对每个字节计数,序号为32bit无符号数据,到达232-1 回到0
SYN:当建立一个新的连接的时候SYN变为1,此时序号字段包含主机选择的初始序号ISN(Initial Squence Number),该主机发送的第一个字节序号为ISN+1。
确认序号:等于上次已经成功收到的字节序号加1,只有ACK标识为1时确认序号才有效。连接一旦建立确认序号总是被设置。
因为TCP提供全双工的服务,所以连接的每一方必须保存传输数据序号。
TCP可以表述为一个没有选择确认和否认的滑动窗口协议,收到数据包后不能确定或否定该数据包的对与错,而只是回复相应的确认序号。
首部长度:给出首部32bit字的数目,为4bit所以,首部长度最长为60字节,不加选项为20字节。存在这个字段的原因是选项长度是可变的。
标识位:

滑动窗口大小:TCP的流量控制由连接双方声明窗口大小提供,窗口大小的单位为字节,起始于确认序号指定的值,窗口大小字段为16bit,所以窗口最大为65535字节。
校验和:覆盖首部和数据,强制性字段,由发端计算和存储,由接收端校验。
紧急指针:当URG为1时才有效,是一个正的偏移量,和序号相加表示紧急数据最后一个字节的序号。
选项:最常见的选项是最大报文大小MSS(Maximum Segment Size).
TCP/IP详解 笔记十三的更多相关文章
- TCP/IP详解 笔记十四
TCP/IP协议(二) 连接的建立与终止 tcpdump -S输出TCP报文的格式 格式: 源>目的:标志 (标志就是tcp头部).标识首字符意义如下: 例如:telnet 某服务的输出(包括 ...
- TCP/IP详解 笔记一
概述: Tcp-ip让网络上的计算机进行通信,而不管计算机和操作系统是否一样. 分层结构: Tcp/ip协议族是多层协议的组合,而tcp和ip只是其中的两个协议而已. 一个通信举例: 注意图的右上方: ...
- TCP/IP详解 笔记十一
域名服务系统(DNS) DNS:名字到IP转换:电子邮件选路信息:分布式数据库 解析器:是通过gethostbyname(3)和gethostbyaddr(3)来实现的 最常用的名字服务器是BIND ...
- TCP/IP详解 笔记九
广播和多播 多播和广播只能用于UDP包,TCP明确在两个进程间建立连接. 多播:帧只传送给属于多播组的多个接口 主机对帧的过滤过程: 通常网卡只接收那些目的地址为本物理接口地址或广播地址的帧:设置为混 ...
- TCP/IP详解 笔记八
UDP协议 UDP是传输层协议,提供无连接不可靠的数据传输,其优点失效率高,确定确定是无序不可靠. 报文格式 UDP头部 TCP和UDP的端口号是独立的 UDP长度是指UDP数据报的总长度 UDP的校 ...
- TCP/IP 详解笔记
最早的 TCP 协议文档是 RFC793. TCP 提供一种面向连接的.可靠的字节流服务. 面向连接容易理解,那么什么是字节流服务呢? 答:两个应用程序通过 TCP 连接交换 8 bit 字节构成的字 ...
- TCP/IP详解 笔记十二
简单文件传送协议 TFTP 1) 初衷是为了引导无盘系统 2) 使用UDP 3) 代码都能适合只读存储器 无盘主机通过RARP获得ip地址后进行一个TF ...
- TCP/IP详解 笔记十
IGMP Internet组管理协议 IGMP的作用:让一个物理网络上的所有系统知道主机所在的多播组: 让路由器知道多播数据报应该向哪个端口转发. IGMP有固定长度,没有可选数据,在ip头部的协议值 ...
- TCP/IP详解学习笔记
TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...
随机推荐
- Method not found: '!!0[] System.Array.Empty()'.
错误原因:程序里面没有可调用的方法(程序使用的是 .NET Framework 4.6,但是你自己的系统里面使用的不是 4.6版本) 解决方法:1.安装window sp1 ,下载地址是:https ...
- JAVA CDI 学习(2) - Scope 生命周期
在上一节中,我们已经知道了如何用@Inject实现基本注入,这一节研究Bean实例注入后的“生命周期”,web application中有几种基本的生命周期(不管哪种编程语言都类似) 1.Applic ...
- (一)GATT Profile和GAP 简介(目前所有的BLE应用都基于GATT,所以也要了解是怎么一回事)-转发
个人大总结:(先后顺序) 1.GAP协议定义多个角色(其中就有中心设备[GATT客户端](唯一)叫主设备||和外围设备[GATT服务端端](多个)也叫从设备). 2.先经过GAP协议,再有GATT协议 ...
- Ace - Responsive Admin Template
Ace简介: Ace 是一个轻量.功能丰富.HTML5.响应式.支持手机及平板电脑上浏览的管理后台模板,基于CSS框架Bootstrap制作,Bootstrap版本更新至 3.0,Ace – Resp ...
- ASP.NET XmlSerializer权限问题
今天碰到一个奇怪问题.因为在2台服务器上做文件共享,使服务器A能访问服务器B的共享目录.在IIS上使用虚拟目录实现的话,需要给应用程序池指定一个统一的账号.在调试的时候能够使用,但是一部署到服务器上, ...
- checkboxlist 下拉框多选功能 ,模拟dropdownlist带复选框效果
前台代码 01.<html xmlns="http://www.w3.org/1999/xhtml"> 02.<head runat="server&q ...
- WebHeaderCollection 类
https://msdn.microsoft.com/zh-cn/library/system.net.webheadercollection(v=VS.95).aspx /// <summar ...
- Firefox about
在firefox的地址栏输入about:about,然后看一下各个链接.有的链接有具体的用途,有的链接疯言疯语,并无软用. about:about集中了火狐浏览器的全部用户界面,平时常见的prefer ...
- python 英文字串首字母改为大写
#英文字串首字母改为大写 st = "string" St = st[0].upper() + st[1:] 2016-10-22 后来了解到 python 内部有相关实现,感觉 ...
- Swift&NodeJS 使用Alamofire进行Post(zhuan)
这篇博客主要实现Swift客户端和NodeJS后台的Post.Get请求实现. 我是一个略有点讨厌重复使用工具的人,比如这些基本功能完全可以用OC和PHP等替代,但是没办法,现在知识更新的太快啦,Sw ...