TCP传输控制协议

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793[1]定义。

TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

数据的加工和传输过程

TCP/IP 模型每个层都有各自的功能和分工,当有用户数据想要发送给另一台设备的时候,数据自上而下,从应用层向链路层传递有一个复杂的过程。

以 Telnet 为例,Telnet 在传输层是使用 TCP 协议的。

数据从应用层进入,到达传输层,添加上 TCP首部,将数据加工成 TCP 段,称为 Segment。这是为了保证数据的可靠性。

接着数据到达网络层,在网络层使用 IP 协议,被添加上 IP 首部,将数据加工成 IP数据报,称为 datagram 。经过网络层 IP 协议的加工,指定目标地址和 MAC 地址,保证数据准确的发送到目标机器。

接着数据到达链路层,添加上以太网头部,将数据加工成以太网帧,称为 frame,包含了网卡等硬件相关的数据。

无论是 Telnet 还是 HTTP,都至少涉及到两台设备才能称之为网络互连,那发送方有一个数据自应用层向底层链路层的加工过程,对应的,在数据接收方,有一个数据从链路层向应用层解析的过程。这中间可能经历了漫长的传输介质,比如光纤,还可能有若干个中间设备,比如路由器、交换机等等。要保证数据在这么复杂的网络环境中可靠、准确的发送到目标机器,就是靠的 TCP、IP协议精巧的设计。

相关推荐
wanhengidc14 分钟前
云计算时代 云手机与云服务器的不同
服务器·智能手机·云计算
j***51892 小时前
Redis 安装及配置教程(Windows)【安装】
数据库·windows·redis
Karl_wei4 小时前
桌面应用开发,Flutter 与 Electron如何选
windows·flutter·electron
ascarl20105 小时前
记录一下es节点掉线后修复好了的情况
运维·jenkins
j***29485 小时前
IPV6公网暴露下的OPENWRT防火墙安全设置(只允许访问局域网中指定服务器指定端口其余拒绝)
服务器·安全·php
ao_lang6 小时前
数据链路层
linux·服务器·网络
safestar20126 小时前
Elasticsearch深度实战:从分布式原理到生产环境踩坑全记录
运维·搜索引擎·全文检索·es
额呃呃6 小时前
零拷贝I/O的核心概念
服务器·php·apache
未名编程7 小时前
Windows 下如何部署 Nacos 并导入配置文件
java·windows
小兔薯了7 小时前
7. LNMP-wordpress
android·运维·服务器·数据库·nginx·php