tensorflow Redis Spring Cloud golang 5G codeigniter webpack optimization jquery each eclipse闪退 kafka消费不到数据 matlab生成对角矩阵 反函数的二阶导数 java表达式 java语言代码大全 java中的泛型 千千静听绿色版 海鸥浏览器 51脚本 cg模宝 数据挖掘原理与算法 网络文件服务器 汽车配件查询软件 大势至usb监控 php正则匹配 maven项目打包 有线网卡驱动下载 0x000007a 网络驱动 虚拟声卡驱动 jpg格式转换器 黑道圣徒4去马赛克补丁 日文游戏乱码转换工具 c4d序列号 ae烟雾特效 php教程下载 maya2013 制表符 dnf驭剑士刷图加点 js数组删除元素
当前位置: 首页 > 学习教程  > 编程语言

传输层协议 三次握手和四次挥手

2020/12/28 19:55:59 文章标签:

这里写目录标题TCP和UDP协议TCP报文TCP连接的三次握手TCP断开连接的四次挥手常用的TCP端口号及其功能项目TCP和UDP协议 传输控制协议(TCP):TCP(传输控制协议)定义了两台计算机之间进行可靠的传输而交换的数据和确认信…

这里写目录标题

  • TCP和UDP协议
    • TCP报文
      • TCP连接的三次握手
        • TCP断开连接的四次挥手
        • 常用的TCP端口号及其功能项目

TCP和UDP协议

传输控制协议(TCP):TCP(传输控制协议)定义了两台计算机之间进行可靠的传输而交换的数据和确认信息的格式,以及计算机为了确保数据的正确到达而采取的措施。协议规定了TCP软件怎样识别给定计算机上的多个目的进程如何对分组重复这类差错进行恢复。协议还规定了两台计算机如何初始化一个TCP数据流传输以及如何结束这一传输。TCP最大的特点就是提供的是面向连接、可靠的字节流服务。
用户数据报协议(UDP):UDP(用户数据报协议)是一个简单的面向数据报的传输层协议。提供的是非面向连接的、不可靠的数据流传输。UDP不提供可靠性,也不提供报文到达确认、排序以及流量控制等功能。它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。因此报文可能会丢失、重复以及乱序等。但由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

TCP报文

在这里插入图片描述

TCP报文是TCP层传输的数据单元,也叫报文段。

1、端口号:用来标识同一台计算机的不同的应用进程。

1)源端口:源端口和IP地址的作用是标识报文的返回地址。

2)目的端口:端口指明接收方计算机上的应用程序接口。

TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。

2、序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号。e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0。

3、数据偏移/首部长度:4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。

4、保留:为将来定义新的用途保留,现在一般置0。

5、控制位:URG ACK PSH RST SYN FIN,共6个,每一个标志位表示一个控制功能。

1)URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。

2)ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

3)PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

4)RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

5)SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。

6)FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

6、窗口:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小时一个16bit字段,因而窗口大小最大为65535。

7、校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。

8、紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

9、选项和填充:最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。

10、数据部分: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段

TCP连接的三次握手

在这里插入图片描述
TCP建立连接的过程称为三次握手

TCP断开连接的四次挥手

在这里插入图片描述
1、服务器向客户端发送FIN和ACK位置1的TCP报文段。
2、客户端向服务器返回ACK位置1的TCP报文段。
3、客户端向服务器发送FIN和ACK位置1的TCP报文段。
4、服务器向客户端返回ACK位置1的TCP报文段。
在TCP断开连接过程中,有一个半关闭的概念。TCP 一方(通常是客户端)可以终止发送数据,但仍然可以接收数据,称为半关闭。具体描述如下:
1、客户端发送FIN报文段,半关闭了这个连接,服务器发送ACK报文段接受半关闭。
2、服务器继续发送数据,而客户端只发送ACK确认,不再发送任何数据。
3、当服务器把所有数据都发送完毕时,就发送FIN报文段,客户再发送ACK报文段,这样就关闭了TCP连接。
4、TCP断开连接时在中间停止时称为TCP半关闭。

常用的TCP端口号及其功能项目

端口| 协议 | 说明
21 | FTP | FTP服务器所开放的控制端口
23 | TELNET| 用于远程登录可以远程控制管理目标计算机。
25 | SMIP | SMTP服务器开放的端口,用于发送邮件。
80 | HTTP | 超文本传输协议
110 | POP3 | 用于邮件的接收


本文链接: http://www.dtmao.cc/news_show_550406.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?