IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP/IP,TCPsocket,tcp协议的特点,tcp报文段最长字节数,tcp头内容,确认号和超时时限的设定细节,tcp协议是GBN和SR的混合体, -> 正文阅读

[网络协议]TCP/IP,TCPsocket,tcp协议的特点,tcp报文段最长字节数,tcp头内容,确认号和超时时限的设定细节,tcp协议是GBN和SR的混合体,

TCP/IP,TCPsocket,tcp协议的特点,tcp报文段最长字节数,tcp头内容,确认号和超时时限的设定细节,tcp协议是GBN和SR的混合体,

一、TCPsocket
1、TCP是面向连接的,它的socket其实是一个数据模型,拥有本IP,目标IP,本端口,目标端口的四元组,还有连接状态信息,并使用一个整数与其对应,这个整数就是文件描述符。
2、这种数据模型封装了一个tcp连接的会话关系,体现在代码上就是socket文件描述符。
3、一个TCPsocket就是一个TCP会话关系。

4、使用tcp通信时,程序员只需要向tcpsocket交付信息,目的IP,目的端口,
tcp会将报文,tcpsocket进行传输,发两样东西
5、体现在函数中是:
write(clientsocket,buf,sizeof(buf));

二、Tcp的特点如下:
1、点对点,一个发送方,一个接收方,无法一对多或者多对多
2、可靠保序,但是没有报文边界,发送的报文和接受的报文需要自定义协议或者特殊符号区别报文,避免将多个识别为一个,或者一个识别为多个。
3、管道化传输,TCP将应用层的报文分割成长度为MSS的报文段,并给每个报文段加上tcp的头部并存放于发送缓冲区,然后通过发送窗口向接收方发传输报文端。
4、发送和接收都有缓冲区,代码中对应write和read时传入的char[] buffer
5、全双工数据,同一连接中的数据是双向流动的,传输时的报文段最大值用MSS表示,maximum segment size
6、面向连接的,传输数据之前需要握手,传输完了需要挥手
7、有流量控制和拥塞控制,跟随网络状态和接收方状态改变发送速率

三、tcp报文最长字节数与计算
1、应用传给TCP的报文被分割成小的报文段,加上TCP头部(20字节),然后加上IP头部(20字节),然后传给数据链路层,
2、数据链路层的最大传输单位大小为1500字节(bit,简称b),
3、可以计算出TCP的MSS为1460b,分割应用层报文时以1460b为单位。

四、TCP头部:
在这里插入图片描述

1、序号:
a、TCP头部中的序号不代表tcp分割成报文段时当前报文段的序号,而是当前报文段的第一个字节和整体报文第一个字节的偏移量,是字节序号
b、Tcp连接的发送方和接收方会在握手的时候确认一个序号,就是各自的x值,之后的报文段交换中一直使用确认好的x,每一段各会确认一个x作为初始序号值。
c、每次握手会重新得到一个初始x值,防止新的连接接收网络中的老连接的报文段。

2、确认号:
a、给ACK携带的,确认n-1及以前的字节均被收到,tcp中的ACK是期待发送的序号,就是接收到的连续报文段的字节序号+上一个报文段的字节数,

在这里插入图片描述

b、如果发送方发送的tcp报文段序号是100,这个报文段内容有19个字节,接收方就会发送一个ACK120,表示自己期望接收的下一个报文段是字节序号为120的tcp报文段,并确认119以及以前的报文段全部收到。
c、如果此时接收方又收到了序号是80,内容为19字节的报文段,通过累计确认机制,接收方还是会发送一个ACK120作为回复。
d、如果接收方在期望120的时候接收到了序号为140的报文段,这属于乱序了,接收方会继续向发送方发送ACK120表示期望(便于引发快速重传),如果140位于接收窗口中,就会将该报文段接收。

e、序号和确认号都是对字节进行计数的,而不是对报文段进行计数的。

3、标志位:URG,ACK,PSH,RST,STN,FIN,
a、URG是紧急数据,通常不用
b、ACK是确认应答
c、PSH是马上推出数据,也通常不用
d、RST,SYN,FIN用于建立/拆除连接

4、接收窗口:
a、愿意接收的字节数量,就是接收缓冲区空闲区域的大小,用于给发送方控制发送速率,发送方为了防止发送的消息太多溢出导致效率受损,会限制自己的发送窗口的大小。

5、校验和
a、用于检查报文段是否出错。

6、可选项的长度可以通过首部长度计算得出。

五、TCP超时时限的设定:
1、超时时限设置的太长和太短都不合适。
2、在局域网中,tcp报文段传输时往返延时小,可以设定为固定值。
3、往返时延RTT的平均值加上4倍的标准差是动态计算超时时限中合理的设置。

六、TCP协议是BGN协议和SR协议的混合体,
1、使用流水线传输,维护发送窗口和接收窗口。
2、累计确认,肯定应答的序号为期待字节序号的值。
3、发送方窗口只设置一个计时器,与后沿对应的报文段关联,超时后只重传位于后沿的报文段。
4、TCP接收端对滑动窗口以外的包没有规定的处理。
5、发送方在收到发送窗口中某个报文段三个冗余确认应答(加上一个正常的应答一共4个)后会触发后沿报文段重传,这个称为快速重传。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:56:47  更:2022-05-05 11:58:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:45:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码