文章目录

  • 前言:本章主要介绍TCP/UDP协议以及端口协议功能,TCP链接的三次握手和TCP链接的四次挥手
  • TCP(Transmission Control Protocol)
  • TCP的报文字段
  • UDP协议
  • 常用端口号及其说明
  • TCP连接的三次握手
  • 4.
  • TCP断开连接的四次挥手

前言:本章主要介绍TCP/UDP协议以及端口协议功能,TCP链接的三次握手和TCP链接的四次挥手


TCP(Transmission Control Protocol)

TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。

TCP的作用:应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,它是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。

端口号:TCP段结构中端口地址都是16比特,可以有在0-65535 范围内的端口号。对于这65536个端口号有以下的使用规定:
1.端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的。任何TCP/IP实现所提供的服务都用1-1023之间的端口号,是由IANA来管理的;
2.客户端只需保证该端口号在本机上是惟一的就可以了。客户端口号因存在时间很短暂又称临时端口号;
3.大多数TCP/IP实现给临时端口号分配1024~5000之间的端口号。大于5000的端口号是为其他服务器预留的。

==

TCP的报文字段

:

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

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

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

序号: 发送端为每个字节进行编号,便于接收端正确重组。当TCP从进程接收数据字节时,把它们分片成数据段存储在发送缓存中,并对每个字节进行编号。当数据到达目的地之后,接收端会按照这个序号把数据重新排列,保证数据的正确性 。

确认号: 对发送端确认消息。接收端响应消息时将会用它来告诉发送端这个序号之前的数据段以及收到,如确认号是X,就是表示前x-1的数据段都已经到达

首部长度:用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但首部长度最大可扩充为60字节

控制位:
URG: 紧急位。紧急指针有效位
ACK: 确认位。只有当ACK=1时,确认序列号字段才有效:当ACK=0时,确认号该字段无效。
PSH: 急迫位。标志位=1时,要求接收方尽快将数据段送达应用层
PST: 重置位。当PST值=1时,通知重新建立TCP连接
SYN: 同步(连接位)。同步序号位,TCP需要连接时,将这个值设为1
FIN: 断开位。当TCP 完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1

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

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

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

UDP协议

UDP在IP报文的协议号是17。 UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层–传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据,是提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范

常用端口号及其说明


TCP连接的三次握手

整个流程为:

  1. 客户端主动打开,发送连接请求报文段,将SYN标识位置为1,Sequence Number置为x(TCP规定SYN=1时不能携带数据,x为随机产生的一个值),然后进入SYN_SEND状态
  2. 服务器收到SYN报文段进行确认,将SYN标识位置为1,ACK置为1,Sequence Number置为y,Acknowledgment Number置为x+1,然后进入SYN_RECV状态,这个状态被称为半连接状态
  3. 客户端再进行一次确认,将ACK置为1(此时不用SYN),Sequence Number置为x+1,Acknowledgment Number置为y+1发向服务器,最后客户端与服务器都进入ESTABLISHED

4.


TCP断开连接的四次挥手

1.PC1发送FIN/ACk报文,FIN=1 ACK=2,客户端进入FIN_WAIT_1状态
2.PC2发送ACK报文,ACK=1,服务端进入CLOSE_WAIT状态,客户端接收到这个确认包之后,进入FIN_WAIT_2状态
3.PC2再发送FIN/ACK报文,FIN=1,ACK=1.服务端进入LAST_ACK状态,等待来自客户端的最后一个ACK
4.PC1发送ACK报文,ACK=1,客户端进入TIME_WAIT状态后进入 CLOAED状态,服务器端接收到这个确认包之后,关闭连接,进入CLOSED状态

TCP/UDP以及端口协议功能相关推荐

  1. HTTP,TCP,UDP常见端口对照表大全

    HTTP,TCP,UDP常见端口对照表,下面罗列了包括在Linux 中的服务.守护进程.和程序所使用的最常见的通信端口小贴士:Ctrl+F 快速查找 Http端口号(点标题可收缩或展开) No1.最常 ...

  2. TCP/UDP常用端口及对应服务列表

     计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口.所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样.以下为两种通信协议的端口 ...

  3. TCP/UDP常用端口列表

    前言 文章的表格中列举了Linux 中的服务.守护进程.和程序所使用的最常见的通信端口,该列表还可以在 /etc/services 文件中找到,更多详细信息推荐查看由互联网号码分派局(IANA)制定的 ...

  4. HTTP,TCP,UDP常见端口对照表

    HTTP,TCP,UDP常见端口对照表 No1.最常用端口 端口号码/层 名称 注释 1 tcpmux TCP端口服务多路复用 5 rje 远程作业入口 7 echo Echo服务 9 discard ...

  5. 【NB-LOT笔记1】移远BC28BC95BC35-G模块+STM32基于TCP\UDP\MQTT三大协议的入网与通信测试例程

    一.main应用程序主函数框架(主要参考IAP函数的调用与while(1)内容)  二.NB-LOT模块的初始化(主要参考NB_BC28_Init()函数内部AT命令的调用顺序与验证信息) 三.TCP ...

  6. 端口、TCP/UDP、端口转发、UPnP

    1.什么是端口? 单个服务器可以同时运行多个服务或程序,并且这些服务是共享一个IP地址的,如同一个家庭共享一个街道地址.因此服务器必须知道哪个数据包相对应于哪个服务,这样才能准确将数据进行传输.而在网 ...

  7. TCP/UDP常见端口

    著名端口 端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat ...

  8. 网络编程:概述TCP/UDP以及端口号的作用

    TCP/UDP对比 1. TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前 不需 要建立连接 2. TCP提供可靠的服务.也就是说,通过TCP连接传送的数据,无差错,不丢失 ...

  9. TCP/UDP常见端口参考

    下面的表格中列举了包括在红帽企业 Linux 中的服务.守护进程.和程序所使用的最常见的通信端口.该列表还可以在 /etc/services 文件中找到.要查看由互联网号码分派局(IANA)制定的&q ...

最新文章

  1. 一个冷僻的知识点try直接返回finally里的设置null其实无效
  2. Web Components是不是Web的未来
  3. linux里grep和egrep,fgrep的区别
  4. Exchange server 2013 安装部署初体验
  5. 程序员过关斩将--请不要误会redis 6.0 的多线程
  6. webpack中实现按需加载
  7. flume学习(三):Flume Interceptors的使用
  8. Linux的相关资源帖
  9. linux上机考试题(Linux基础)
  10. 如何做一个阿里云物联网安卓原生APP
  11. 实战案例丨腾讯安全托管服务MSS助力数字广东重保期间“0事故”
  12. 对不起,这5类人都不适合自学编程
  13. 材料分享主题一:如何向上级汇报部门/组织架构
  14. 99%的人看了它都会说这是一篇很全的tomcat服务❤️❤️[⭐建议收藏⭐]
  15. code回归采访哭 ladies_LADIES’CODE再次提到高恩妃和权梨世的车祸事故 在节目中流泪...
  16. word数据提取技巧:如何批量提取身份证出生日期
  17. Assert.assertNotNull()断言是否是空
  18. Android系统解除USER版本无法进入Recovery模式限制
  19. Java 集合框架(8)---- 总结
  20. VB编写欧姆龙PLC和霍尼韦尔扫描枪 的串口调试程序,可供大家参考

热门文章

  1. 神医视频消重软件,集合了消重跟视频原创制作于一体神器
  2. c#连接扫描仪,操作扫描仪
  3. 抖音提取封面php,抖音解析php API现在能解析出图片视频不行了
  4. HTML网页设计期末课程大作业~动漫樱桃小丸子5页表格div+css学生网页设计作业源码
  5. 目标检测—SSD系列算法原理介绍
  6. __cdecl __stdcall
  7. 分布式流式计算框架Storm
  8. 【安全牛学习笔记】Smurf攻击、Sockstress
  9. 了解买家的购买行为,才能做好卖家
  10. Spark Streaming源码阅读(0)楔子