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协议 -> 正文阅读

[网络协议]互联网协议之TCP协议

TCP/IP互联网协议


一、TCP协议

概述

TCP全名是(Transmission Control Protocol 传输层控制协议),是一个可以提供可靠的、支持全双工、连接导向的协议,因此在客户端和服务端之间传输数据的时候,是必须先建立一个连接的。

TCP的特点

连接:

  1. 是虚拟抽象的概念
  2. 能让两个通信的程序间确保彼此都在线
  3. 加快响应请求速度
  4. 连接也被称之为会话(session)
  5. 使得通信更稳定更安全
  6. 消耗更多资源
    总结:连接不是一个物理概念,而是通过传输双方的约定加上程序手段去形成的一个抽象的概念,连接会让传输的双方更加的资源倾斜,从而保证连接的通畅,连接让双方的传输更加稳定安全,但是连接消耗更多的资源,比如说每一个请求都要有响应。还有一部分是不适用于连接导向这种协议的,比如说视频播放,通常视频播放不在TCP/IP协议上

全双工:

  • 单工:任何时刻数据只能单向发送
  • 半双工:允许数据在两个方向上传输,在某一时刻,只能存在一个方向数据,只允许数据在一个方向上传输,其实一条线路就可以实现半双工。线路多只是增加传输速度
  • 全双工:任何时刻都能双向发送数据,至少需要两条线路

可靠性:是指数据保证无损传输

  • 数据在网络间传输是无序的,采用的封包交换的技术,接收方有一种算法将无序的数据恢复原有的状态
  • 如果发送方同时要把消息发送给多个接受方,这种情况称之为多播,在这种情况下对数据的可靠性要求每个接收方都无损的收到副本。需要分布式环境。多播有一种情况是强可靠性,强可靠性就是只要一个消息传输到了任何一个接收者,那就所有的接收者都要接收到这个消息,要么所有接收者都拒收这个消息,分布式的一致性,只不过没有分布式的一致性要求那么高,只是传输的无损

TCP协议的工作过程:

  • 建立连接的过程(三次握手)在这里插入图片描述

  • 断开连接的过程(四次挥手)在这里插入图片描述
    比建立连接多一次的原因是服务端发送ACK和FIN时是不能一起打包的

  • 传输数据
    3.1. 报文拆分:拿到应用层数据,进行拆分,拆分成多个数据块,称之为TCP段,根据封包交换在网络中存在一定的并行线路,拆分之后就可以复用这些线路进行传输。数据也不要拆得太小,拆分数据是挺消耗CPU资源的,需要CPU频繁的内存操作。TCP也只是对数据进行一个初步的拆分,还有更细粒度的拆分会交给网卡,网卡是硬件设备,不消耗内存
    3.1.1 传输数据-顺序保证在这里插入图片描述
    问题:tcp段是非常多的,不能一次把所有的排序都能完成,只能局限在某一个部分进行排序
    解决方案:时间窗口排序,只排序这这一个时间段内的数据,如果排序时发现数据不完整,会直接抛弃这个时间窗口,要求发送方重发
    3.1.2 TCP序号:发送序号(Seq)、接受序号(Ack),一个端的发送序号是另一个端的接收序号
    在这里插入图片描述

    3.2. 增加TCP头

    TCP头:TCP报文段 = TCP头部 + TCP段数据

    • 源端口:描述发送方机器上的应用
    • 目标端口:描述接收方服务器上的应用
    • 发送序号(Seq)/接受序号(Ack):32位字节,最大到40亿,就能支持很长时间的传输

    3.3. 数据重组
    未完待续

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:36:22  更:2021-09-18 10:37:33 
 
开发: 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:31:41-

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