ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TCPIP协议群/TCP协议

2021-12-08 21:31:38  阅读:165  来源: 互联网

标签:协议 IP TCP 发送 TCPIP 服务端 客户端


文章目录


上文中讲到OSI七层模型设计较为臃肿,后来罗伯特.卡恩和文顿.顿瑟夫提出的TCP协议,TCP提出的时候还没有IP协议,TCP协议中就包含了IP协议,后来为了解耦将两层分开,TCP全名Transmission Control Protocol,传输层协议;IP是Internet Protocol ,网络层协议。后来统称为TCP/IP协议群。

TCP/IP协议群要解决的5个问题

1.报文拆分
比如用户要传输一个大文件,但是在网络底层不支持一次传输这么大的数据量,那么就需要把它拆分成多个数据块来进行传输。为了提高传输速率,采用复用路径的方式
2.增加协议头
数据经过分块之后,接收端就需要进行数据的重组,传输的时候进行拆分,接受的时候进行重组,就像现实中的快递一样,发快递的时候就需要快递员来给每个包裹贴标签类似。所以传输的时候就需要增加协议头来添加一些描述:比如要发送目的地的地址,到目的地中具体的那个应用等。
在这里插入图片描述
3.数据在相邻设备间数据传递
不同边界的设备可以通过网关进行对外传输,底层通过复杂的网络传输层。那么最基本的在同一边界,也就是在同一个局域网内怎么传输,这是要解决的一个最基本的问题
4.路由和寻址的问题
数据到达一个节点,怎么找到下一个最优节点,通过复杂的路由算法找到空闲节点来进行传输
5.数据重组
发送的时候是进行数据的拆分了,那么在接受时怎么对这些数据进行重组,而且要保证这么数据正确性的。
这五个问题就是每个协议群要面临解决的问题。

TCP/IP协议群的5层模型

在这里插入图片描述
5层模型和OSI的区别:
1.删除了会话层,因为会话层可以交给下边的传输层也可以给上边的应用层来实现,本质上会话是虚拟概念,不是必须的
2.删除了表示层,数据压缩、数据格式转换不是应用必须的
如果应用需要这两层,那么可以在应用层里来实现
TCP/IP协议群可选项:
传输层:TCP协议、UDP协议、TLS/SSL、SCTP等
网络层:IP协议(ipv4和ipv6)、ICMP协议、IPSec协议

TCP协议

概念
TCP全名是(Transport Control Protocol),是一个可以提供可靠的、支持全双工、连接导向的协议,因此在客户端和服务端之间传输数据的时候,是必须先建立一个连接的。
在这里插入图片描述
1. 什么是连接
连接其实是虚拟抽象的概念,就是能让两个通信的程序间保持彼此都在线,加快相应的请求速度。比如两个人对话结束前都不会直接离开,连接也成为会话(session),使通信更稳定、更安全,但是保持连接也会消耗更多的资源。
2. 什么全双工
了解单工:单工就是任何时候数据只能单向发送,比如固定A->B发送数据,就只能是A->B发送,B不能向A发送
了解半双工:半双工就是允许数据在两个方向上传输,在某一时刻,只允许数据在一个方向上传输。比如A->B发送数据,B也可以向A发送数据,但是,在同一时间只能是A向B发送数据或者是B向A发送,假设有10个物理线,不存在五根线是A->B,五根线是B->A的情况。
全双工:任何时刻都能双向发送数据,但是至少是两根线路才行,同一时刻一根线路可以A->B发送,另一根线路可以是B->A发送
3.TCP协议的工作过程(三次握手,四次挥手)
建立连接的过程(三次握手)
在这里插入图片描述
第一次握手:客户端发送SYN,服务端准备好进行连接(也就是保证了客户端有发送能力)
第二次握手:服务端针对客户端的SYN给ACK,服务端发送SYN(保证了服务端有接受能力和发送能力)
第三次握手:客户端准备就绪,客户端发送ACK(保证了客户端有接受能力)
通过三次握手来却宝宝客户端和服务端都具有接受和发送的能力,才能建立起连接。

断开连接的过程(四次挥手)
在这里插入图片描述
第一次挥手:客户端发送断开的请求FIN给服务端,告诉服务端我要断开了
第二次挥手:服务端收到客户端的断开请求FIN,会给客户端一个响应,告诉客户端我知道你要断开了。
第三次挥手:服务端发送确定关闭FIN,这里为什么不能像建立请求时那样同时发给客户端呢,因为服务端收到断开请求时不能立即断开,这时服务端可能还在处理某个请求,服务端需要经过一个等待确定可以关闭连接了,再发送FIN给客户端
第四次挥手:客户端收到FIN处理完自己的事情后发送ACK,之后客户端和服务端就断开连接
4.TCP协议传输数据
在这里插入图片描述
TCP协议传输数据时需要经过三个步骤:
报文拆分:
就是应用层数据很大,无法一次性传输完时,就需要报文拆分,拆分成多个数据块后并行传输

报文拆分后如何保证数据的可靠性?
在发送方拆分后给每个数据块标上序号,发送的时候有序发送,接收方接到数据后按照序号进行排序重组。

如果TCP段特别多的时候,该如何进行排序?
采用时间窗口方式接收数据,也就是接收方规定只接受处理一个时间段内受到的数据进行排序,如果发现这段时间内的数据不是连续性的,那么就可能存在丢包现象,就会告诉发送方进行重发。

全双工传输时,一个报文拆分后AB同时收到不同序号时怎么处理?
TCP采用了两个序号来保证可靠性,发送序号(Seq)、接收序号(Ack),一个端的发送序号就是另个端的接受序号,seq和ack是一对
在这里插入图片描述

其实TCP传输中序号并不是自增的,而是根据发送数据和接收数据的字节数来增加,从而保证有序性,如下图整个过程:
在这里插入图片描述
TCP头:
TCP报文段分为,TCP头部和TCP数据段,头部主要包括:
1.源端口:描述发送方机器上的应用
2.目标端口:描述接收方服务器上的应用
3.发送序号(Seq)/接收序号(Ack)
TCP头-标志位:
1.NS、2.CWR:TCP扩展协议
3.ECE:显示拥塞控制协议,有助于帮助解决延迟和丢包问题,
4.URG:紧急标志位,需要优先处理
5.SYN(Synchronize Sequence Numbers):同步序号,也就是在建立连接。
6.FIN: 终止连接
7.ACK(Achnowledgment):响应。
8.PSH(push):传送数据
9.RST(Reset Connection): 重置连接
TCP协议周边配置
1.纠错能力:保证数据可靠性:
TCP拥有一个16bit的Checksum字段
Checksum是一个函数,把原文映射到一个不可逆的16bit的编码中这样就可以知道原文传输过程中有没有发生变化
2.流控能力:协同两边速率,保证可靠性:
主要目标:让发送方和接收方协商一个合理的收发速率,让两边都可以稳定的工作。
利用滑动窗口
拥塞控制能力:确定网络的拥堵情况决定传输速度。
在这里插入图片描述

标签:协议,IP,TCP,发送,TCPIP,服务端,客户端
来源: https://blog.csdn.net/weixin_45240169/article/details/121779543

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有