TCP 理论
发布日期:2021-06-29 05:35:31 浏览次数:3 分类:技术文章

本文共 1695 字,大约阅读时间需要 5 分钟。

一:TCP科普

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内, 另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元( MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

二:连接建立

TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。

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状态。

2.2 连接终止

终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。 [1]

*

某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。

*
接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认。
*
一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
*
接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN

三:TCP特点和流程

上面的原理很重要,但毕竟我们只是在API之上做应用。只需要了解特点和流程。知道特点可以做方案时候考量可行性,流程就是可行后的实施。

3.1 TCP特点:

1.
面向连接的:发数据前要进行连接。
2.
可靠的连接:TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。
3.
点到点:TCP连接传送的数据,无差错,不丢失,不重复,且按序到达
4.
最大长度有限:仅1500字节。(http和websocket有了用武之地)
5.
TCP流程: (本段来源)https://blog.csdn.net/xiaobangkuaipao/article/details/76793702

3.2 TCP编程的客户端一般步骤是:

*
创建一个socket,用函数socket();
*
设置socket属性,用函数setsockopt();(可选)
*
绑定IP地址、端口等信息到socket上,用函数bind();* 可选
*
设置要连接的对方的IP地址和端口等属性;
*
连接服务器,用函数connect();
*
收发数据,用函数send()和recv(),或者read()和write();
*
关闭网络连接;

可以加入QQ群:687360507

与大伙沟通交流,技术在于分享而进步

转载地址:https://blog.csdn.net/zhi_Alanwu/article/details/104837628 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:常用命令
下一篇:ESP32笔记(5) 上传https服务器数据格式定义

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月21日 23时06分44秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章