0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

传输控制协议TCP是怎样进行工作的

冬至配饺子 来源:多兰多 作者:Toranto 2022-08-19 09:17 次阅读

TCP介绍

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

TCP是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。

当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。

TCP为了保证报文传输的可靠,就

给每个包一个序号

,同时序号也保证了传送到接收端实体的包的

按序接收

。然后接收端实体对已成功收到的字节发回一个相应的

确认(ACK)

;如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传(超时重传)。

TCP工作过程

poYBAGL-4p6ATcBxAAC3qa_tyN0088.png

首先,我们可以很明显从图中看出,tcp工作需要分两个主体,一个客户端,一个服务器。我用超级大白话来帮助理解:①tcp服务器

买部手机

插上电话卡

设置手机为正常的接听状态

等待他人来电

②在程序中的

创建socket套接字

绑定本机地址信息

设置套接字为被动连接

等待客户端的连接

收发数据

pYYBAGL-4tmAQ8JzAAEZ6AbARv0604.pngpYYBAGL-4t-AKGQqAACYOyTjKB0120.png

我们先运行这个程序,然后打开网络调试助手进行连接:

pYYBAGL-4weAP_RsAAE_nvvRYrc561.pngpYYBAGL-4w2AO5XmAABs8HlCsFU573.png

然后我们在服务器端口发送消息至客户端:

poYBAGL-4zKAWfuxAABvTLIZHQM823.pngpoYBAGL-4zeAe-6JAAGzibGlRos066.png

当然,我们也可以脱离网络调试助手,我们自己协议简易客户端程序:

pYYBAGL-40qAErJlAACk1VyGk0g617.png

同样地,手机要先开机才能接电话,所以先运行服务器,再运行客户端:

poYBAGL-416AaU3BAAB4OjCTWyY120.png

切换到服务器:

poYBAGL-43yAdeQeAACeGV1gQBk463.png

回到客户端:

pYYBAGL-45OAOQN5AACwjcJb8yg514.png

同样也是非常简单,客户端的写法只需要发送建立连接即可,也就是通过connect方法拨通电话。

当然,你也可以选择加入循环语句进行循环收发,但想要达到聊天软件那种收发无规律的效果,还是需要并发编程(后面我也会出的)。

TCP工作方式(原理)

poYBAGL-47-ASoraAAC7gAUfL1M514.png

一、三次握手

TCP是因特网中的传输层协议,使用

三次握手协议

建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接。

术语:

SYN:同步位,SYN=1,表示进行一个连接请求;

ACK:确认位,ACK=1,确认有效,ACK=0,确认无效;

seq:序号;

FIN:断开连接并且会停止发送数据。

poYBAGL-49aABD0VAACXJCTY9vM439.png

TCP三次握手的过程如下:

1. 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。

2. 服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。

3. 客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

形象点就是:

客户端说:服务器我要连接你了,你同意吗?

服务器说:我同意。客户端,我要连接你了,你同意吗?

客户端说:我也同意。

TCP三次握手的原因:

防止已失效的连接请求又传送到服务器端,因而产生错误。三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤。如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。

二、四次挥手

poYBAGL-4-yASUQUAACo5ywKfb4151.png

形象点就是:

客户端说:服务器,我要断开你了!

服务器说:好的!让我传完数据!

数据传输结束后

服务器说:客户端,我要断开你了!

客户端说:好的!

这就表现出了四次挥手,和三次握手不同的是,结束的时候,可能仍然有数据在进行传输,tcp为了保证数据传输的完整性,断开连接会在数据传输结束之后再进行,因此这里也体现出一次挥手。

TCP简易聊天器(局域网)

poYBAGL-5A6ABRLhAADSh34PCso757.pngpYYBAGL-5BOAYwQ7AACneQErvLE782.png

仍然是先服务端再客户端。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9138

    浏览量

    85369
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79062
  • 传输协议
    +关注

    关注

    0

    文章

    78

    浏览量

    11448
  • RTT
    RTT
    +关注

    关注

    0

    文章

    65

    浏览量

    17120
收藏 人收藏

    评论

    相关推荐

    TCP传输控制协议知识科普拓展

    传输控制协议TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信
    的头像 发表于 11-27 17:46 947次阅读
    <b class='flag-5'>TCP</b><b class='flag-5'>传输</b><b class='flag-5'>控制</b><b class='flag-5'>协议</b>知识科普拓展

    请问在stm32板上写tcp协议通过wifi传输怎样设计

    在stm32板上写tcp协议通过wifi传输,该怎样设计,有没有一种无内置tcp协议的wifi模
    发表于 03-04 06:35

    TCP/IP协议栈的工作流程是怎样

    协议栈是什么?BLE协议栈有哪些应用?TCP/IP协议栈的工作流程是怎样的?
    发表于 11-03 07:33

    TCP和UDP协议简析

    。二、TCP编程模型传输控制协议TCP (Transmission Control Protocol)是一种面向连接、可靠的
    发表于 12-15 08:13

    TCP/IP传输协议概揽

    TCP/IP 传输协议概揽 传输控制协议 TCP
    发表于 06-09 21:51 801次阅读
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>传输</b>层<b class='flag-5'>协议</b>概揽

    TCP/IP传输协议概览

    TCP/IP传输协议概揽 传输控制协议 TCP
    发表于 06-09 21:52 925次阅读
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>传输</b>层<b class='flag-5'>协议</b>概览

    TCP/IP协议简介

    TCP/IP协议简介 TCP/IP传输协议概揽 传输
    发表于 06-09 23:07 1413次阅读
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>协议</b>简介

    传输控制协议(TCP)/网络层协议是什么意思

    传输控制协议(TCP)/网络层协议是什么意思 传输控制
    发表于 04-06 16:44 2746次阅读

    TCP传输控制协议

    TCP-IP详解卷2 TCP传输控制协议,学习TCP很好的资料。欢迎下载。
    发表于 05-09 14:33 0次下载

    一文详解TCP传输控制协议

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输
    发表于 05-25 15:38 1599次阅读
    一文详解<b class='flag-5'>TCP</b><b class='flag-5'>传输</b><b class='flag-5'>控制</b><b class='flag-5'>协议</b>

    TCP/IP协议

    TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯
    的头像 发表于 11-09 13:31 2434次阅读

    什么是TCP协议

    TCP(Transmission Control Protocol,传输控制协议),它是最常用传输协议
    的头像 发表于 02-14 10:26 3114次阅读

    TCP/IP协议的组成

    TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯
    发表于 05-06 15:05 2777次阅读

    传统TCP设计的可靠传输协议详解

    传统TCP设计的可靠传输协议是一种基于TCP协议实现的可靠传输方法。下面是传统
    的头像 发表于 07-21 16:51 656次阅读

    TCP协议是什么

    在网络通信的广阔领域中,TCP(Transmission Control Protocol,传输控制协议)扮演着举足轻重的角色。作为TCP/
    的头像 发表于 10-09 13:54 605次阅读