服务器修改tcp和udp端口号,TCP/UDP工作原理及常用端口号

1、TCP的报文格式及工作原理

(1)TCP协议:

TCP位于TCP/IP模型的传输层,它是一种面向连接的端到端协议。TCP作为传输控制协议,可以为主机提供可靠的数据传输。两台主机在通信之前,需要TCP在它们之间建立可靠的传输通道。

(2)TCP端口号:TCP允许一个主机同时运行多个应用进程。每台主机可以拥有多个应用端口,每对端口号、源和目标IP地址的组合唯一地标识了一个会话。端口分为知名端口和动态端口。有些网络服务会使用固定的端口,这类端口称为知名端口,端口号范围为0-1023。如FTP、HTTP、Telnet

、SNMP服务均使用知名端口。动态端口号范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。

(3)TCP头部

IPHeader|  TCP Header

|Data

0

15  31

Source Port | Destination

Port  ||

Squence Number  ||

Ackonwledge Number

||

HeaderLength|Resv|URG|ACK|PSH|PST|SYN|FIN| Window

||

Checksum |

Urgent Pointer  ||

Options | Padding

||

TCP通常使用IP作为网络层协议,这时TCP数据段被封装在IP数据包内。TCP数据段由TCP

Header(头部)和TCP

Data(数据)组成。TCP最多可以有60个字节的头部,如果没有Options字段,正常的长度是20字节。TCP

Header是由如上图标识的一些字段组成,这里列出几个常用字段。

16位源端口号:源主机的应用程序使用的端口号。

16位目的端口号:目的主机的应用程序使用的端口号。每个TCP头部都包含源和目的端的端口号,这两个值加上IP头部中的源IP地址和目的IP地址可以唯一确定一个TCP连接。

32位序列号:用于标识从发送端发出的不同的TCP数据段的序号。数据段在网络中传输时,它们的顺序可能会发生变化;接收端依据此序列号,便可按照正确的顺序重组数据。

32位确认序列号:用于标识接收端确认收到的数据段。确认序列号为成功收到的数据序列号加1。

4位头部长度:表示头部占32bit字的数目,它能表达的TCP头部最大长度为60字节。

16位窗口大小:表示接收端期望通过单次确认而收到的数据的大小。由于该字段为16位,所以窗口大小的最大值为65535字节,该机制通常用来进行流量控制。

16位校验和:校验整个TCP报文段,包括TCP头部和TCP数据。该值由发送端计算和记录并由接收端进行验证。

(4)TCP的工作过程

建立连接:TCP是一种可靠的,面向连接的全双工传输层协议。TCP连接的建立是一个三次握手的过程。主机A(通常也称为客户端)发送一个标识了SYN的数据段,表示期望与服务器A建立连接,此数据段的序列号(seq)为a。服务器A回复标识了SYN

ACK的数据段,此数据段的序列号(seq)为b,确认序列号为主机A的序列号加1(a

1),以此作为对主机A的SYN报文的确认。主机A发送一个标识了ACK的数据段,此数据段的序列号(seq)为a

1,确认序列号为服务器A的序列号加1(b

1),以此作为对服务器A的SYN报文的确认。

传输过程:TCP的可靠传输还体现在TCP使用了确认技术来确保目的设备收到了从源设备发来的数据,并且是准确无误的。目的设备接收到源设备发送的数据段时,会向源端发送确认报文,源设备收到确认报文后,继续发送数据段,如此重复。主机A向服务器A发送TCP数据段,为描述方便假定每个数据段的长度都是500个字节。当服务器A成功收到序列号是M

1499的字节以及之前的所有字节时,会以序列号M 1499 1=M 1500进行确认。另外,由于数据段N

3传输失败,所以服务器A未能收到序列号为M 1500的字节,因此服务器A还会再次以序列号M

1500进行确认。

流量控制:TCP滑动窗口技术通过动态改变窗口大小来实现对端到端设备之间的数据传输进行流量控制。主机A和服务器B之间通过滑动窗口来实现流量控制。主机A发送数据给服务器B时,服务器B通过滑动窗口进行流量控制。主机A向服务器发送4个长度为1024字节的数据段,其中主机的窗口大小为4096个字节。服务器B收到第3个数据段后,缓存区满,第4个数据段被丢弃。服务器以ACK3073响应,窗口大小调整为3072,表明服务器的缓冲区只能处理3072个字节的数据段。于是主机A改变其发送速率,发送窗口大小为3072的数据段。

关闭连接:TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。TCP连接的建立是一个三次握手的过程,而TCP连接的终止则要经过四次握手。主机A想终止连接,于是发送一个标识了FIN,ACK的数据段,序列号为a,确认序列号为b。服务器A回应一个标识了ACK的数据段,序列号为b,确认序号为a

1,作为对主机A的FIN报文的确认。服务器A想终止连接,于是向主机A发送一个标识了FIN,ACK的数据段,序列号为b,确认序列号为a

1。主机A回应一个标识了ACK的数据段,序列号为a 1,确认序号为b

1,作为对服务器A的FIN报文的确认。以上四次交互便完成了两个方向连接的关闭。

2、UDP的报文格式及工作原理

(1)UDP协议:当应用程序对传输的可靠性要求不高,但是对传输速度和延迟要求较高时,可以用UDP协议来替代TCP协议在传输层控制数据的转发。UDP将数据从源端发送到目的端时,无需事先建立连接。UDP采用了简单、易操作的机制在应用程序间传输数据,没有使用TCP中的确认技术或滑动窗口机制,因此UDP不能保证数据传输的可靠性,也无法避免接收到重复数据的情况。

(2)UDP头部

IPHeader |  UDP Header  |

Data

0  15 16  31

Source Port | Destination

Port  ||

Length | Checksum  ||

UDP报文分为UDP报文头和UDP数据区域两部分。报头由源端口、目的端口、报文长度以及校验和组成。UDP适合于实时数据传输,如语音和视频通信。相比于TCP,UDP的传输效率更高、开销更小,但是无法保障数据传输的可靠性。UDP头部的标识如下:

16位源端口号:源主机的应用程序使用的端口号。

16位目的端口号:目的主机的应用程序使用的端口号。

16位UDP长度:是指UDP头部和UDP数据的字节长度。因为UDP头部长度为8字节,所以该字段的最小值为8。

16位UDP校验和:该字段提供了与TCP校验字段同样的功能;该字段是可选的。

(3)UDP的传输过程

主机A发送数据包时,这些数据包是以有序的方式发送到网络中的,每个数据包独立地在网络中被发送,所以不同的数据包可能会通过不同的网络路径到达主机B。这样的情况下,先发送的数据包不一定先到达主机B。因为UDP数据包没有序号,主机B将无法通过UDP协议将数据包按照原来的顺序重新组合,所以此时需要应用程序提供报文的到达确认、排序和流量控制等功能。通常情况下,UDP采用实时传输机制和时间戳来传输语音和视频数据。

3、 常见服务应用的端口号

端口号  协议

注释

1  TCPMUX  主要在SGI Irix机器

5  RJE  远程作业

7  ECHO  回声

18  MSP  报文发送协议

20  FTP-Data  文件传输协议

21  FTP-Control  文件传输协议

22  SSH  远程登陆

23  Telnet  远程登陆

25  SMTP  简单邮件传输协议

37  TIME  时间

43  NAMESERV  主机名称服务

49  TACACS  登录主机协议

53  DNS  域名系统

69  TFTP  小型文件传输协议

70  GopherServices

信息检索协议

79  Finger  查询远程主机在线用户等信息

80  HTTP  超文本传输协议

92  NNP  网络打印协议

93  DCP  设备控制协议

103  X.400Standard  电子邮件标准

109  POP2  邮件服务

110  POP3  客户端访问服务器端的邮件服务

115  SFTP  简单文件传输协议

137  NetBIOS  名称解析

139  NetBIOS  会话服务

161  SNMP  简单网络管理协议

179  BGP  边界网关协议

443  HTTPS  安全超文本传输协议

546  DHCP Client  动态主机配置协议–客户端

547  DHCP Server  动态主机跑配置协议–服务器端

4、总结

(1)TCP报文头中的ACK标志位用于目的端对已收到数据的确认。目的端成功收到序列号为x的字节及之前的所有字节后,会以序列号x

1进行确认。

(2)在TCP的三次握手过程中,要使用SYN和ACK标志位来请求建立连接和确认建立连接。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值