在计算机网络中,端口是一种虚拟数据结构,用于网络应用程序与底层网络协议(如TCP或UDP)进行通信的途径。端口可以被看作是网络地址的一部分,有助于路由器和交换机将数据传送到正确的应用程序。
端口是计算机网络中的关键概念,它为应用程序提供了一种标识和区分不同通信会话的方式。在网络通信中,数据需要通过网络传输到达目标应用程序,而端口就是这个过程中的关键。
服务端:服务端使用知名端口号,通常是固定的,用于特定的服务或协议。知名端口号范围通常是0-1023,这些端口被IANA(Internet Assigned Numbers Authority)指定给了特定的服务。常见的知名端口号包括HTTP的80端口、FTP的20和21端口等。
客户端:客户端使用大于等于1024的随机端口号,用于临时的数据传输。
TCP 80 HTTP 超文本传输协议。
TCP 20 & 21 FTP 文件传输协议。
TCP 23 Telnet 远程登录。
TCP 25 SMTP 简单邮件传输协议。
UDP 53 DNS 域名解析协议。
TCP 443 HTTPS HTTP over SSL/TLS。
TCP头部包含了多种信息,这些信息帮助在发送和接收数据时维持连接的可靠性和顺序。
其中包括:
Source Port (源端口) #表示数据包的发送方的端口号。帮助接收端知道哪个进程发送了这个数据包。
Destination Port (目的端口) #表示数据包的接收方的端口号。确保数据包被正确地路由到接收机上的适当进程。
Sequence Number (序列号) #用于标识发送的数据在整个数据流中的位置。允许接收端按正确的顺序重新组织接收的数据包。
Acknowledgement Number (确认号) #用于确认接收到的数据。告诉发送方哪些数据已被成功接收。
Data Offset (数据偏移) #显示TCP头部的长度。告诉接收端数据部分从哪里开始。
Reserved (保留位) #为将来的使用而预留的位。保证向前兼容,为未来的扩展预留空间。
Control Bits (控制位) #包含URG, ACK, PSH, RST, SYN, FIN等标志位,用于流控制。
URG (紧急位)设置为1时,表示“紧急指针”字段是有效的。
ACK (确认位)当设置为1时,表示“确认号”字段是有效的。
PSH (推送位)告诉接收端应该立即将数据推送到应用程序,而不是等待缓冲区填满。
RST (复位位)用于复位连接,通常在错误发生时使用。
SYN (同步位)用于建立连接时的同步。在三次握手过程中使用。
FIN (结束位)用于关闭连接,表示发送方已完成数据发送。
Window (窗口) #定义了发送方愿意接收的数据量。实现流量控制,防止接收端被发送端的数据淹没。
Checksum (校验和) #用于数据完整性校验。确保数据在传输过程中没有被篡改或损坏。
Urgent Pointer (紧急指针) #当URG标志被设置时使用。指出紧急数据的结束位置。
Options (选项) #可选字段。为TCP提供附加的功能,如最大段大小、时间戳等。
Padding (填充) #确保TCP头部的长度是32位的倍数。为了对齐头部字段。
Data (数据) #实际要传输的数据。传输应用程序的数据。
TCP的设计目的是提供一个可靠的、面向连接的通信服务。为了实现这一目标,TCP使用了以下几种主要机制。
三次握手:在建立连接之前,发送方和接收方之间进行三次握手以确保双方都准备好交换数据。
第一次 SYN置位 A-B
第二次 SYN,ACK置位 B-A
第三次 ACK置位 A-B
确认机制:每当数据被接收,接收方都会发送一个确认回发送方。
Seq=上一次ack
Ack=上一次的seq+length
超时重传:
如果没有接收到,或接收到的是不完整数据,会再次发送Ack请求对方重发
四次挥手:当一方想要终止连接时,双方会进行四次挥手来安全地关闭连接。
第一次 FIN置位 A-B
第二次 ACK置位 B-A
第三次 FIN置位 B-A
第四次 ACK置位 A-B
RST结束连接:一种异常结束连接的方式,当接收到带RST标志的数据包时,连接立即被终止。
收到RST置位的包后,立即结束TCP连接
收到RST置位的包后,不必等待对方的确认,直接结束TCP连接
滑动窗口机制:一种流量控制机制,它允许发送方调整发送数据的速度,以匹配接收方的接收能力。
滑动窗口
通过通告对方本机接收能力,来实现流量控制
完整性校验:通过Checksum字段来确保数据的完整性。
通过Checksum来检查数据完整性
优点:
可靠性高:TCP通过确认机制和滑动窗口机制确保数据的可靠传输。
顺序传输:TCP确保数据包的顺序与发送顺序一致。
缺点:
占用带宽高:由于确认机制和滑动窗口机制,TCP可能会产生额外的网络开销。
传输延迟高:三次握手和四次挥手增加了建立和终止连接的时间。
对数据完整性要求高,但是对传输延迟要求低
TCP是一个重量级的协议,适用于对数据完整性和顺序有严格要求的应用场景,例如文件传输、邮件发送和Web浏览。
UDP是一个简单的、无连接的协议,与TCP相比,它牺牲了可靠性以换取更低的延迟和开销。
与TCP相比,UDP的头部简洁得多,它只包含了最基本的信息。
优点:
占用带宽低:UDP没有确认机制,因此网络开销更小。
传输延迟低:UDP发送数据时不需要建立连接。
缺点:
没有任何可靠性机制:UDP不保证数据的顺序、完整性或可靠性。
对传输延迟要求高,但数据完整性要求低
UDP适用于那些对传输速度有要求,但不需要完全可靠的数据传输的场景,例如在线视频流、语音通话和某些实时游戏。
如有不详或错误,敬请指出。