TCP-IP-part9-TCP与UDP(一)

前言

TCP/IP相关内容第九部分,包含:

  • 传输层的作用
  • 端口号
  • UDP

一、传输层的作用

传输层的作用在于把数据包送到正确的应用程序中,根据端口号识别具体的程序。应用程序的实质是处理应用层的协议。TCP/IP多数应用协议要求客户端、服务端存在。服务端程序监听端口,叫做守护进程。如httpd和sshd守护进程,本质上也就是服务器上的应用程序。不需要逐个将他们启动,只需要超级守护进程inetd代表他们接受请求,由它复刻、转换为各个进程。确认数据包发给哪个守护进程,用端口号可以轻松识别。

两种传输层协议TCP和UDP

TCP是面向连接的,可靠的流协议。UDP是无连接的、不可靠传输协议。TCP是面向字节流发送的,字节按序进入缓存区,分段后进行传输,收方TCP重排后交付给应用层(IP层不需要负责分片)。要等前面的字节确认接受了才能发后面的字节。而UDP面向报文,应用程序分好包好UDP加个首部就直接一股脑丢给IP层发送,由IP层分片和重装,收方UDP收到的就是一整个长长的报文,也不用排序,不具备重发功能,直接交付给上层。

可靠的数据传输用TCP,实时通信和多播广播用UDP。

二、端口号

端口号是识别同一台主机不同应用程序的地址,也被称为程序地址。

一个通信要用五个要素确定,源IP地址、目的IP地址、协议号、源端口号、目的端口号。例如我在电脑上打开两个浏览器浏览同一个网页,此时只有源端口号不一样,其余都一样,但仍是两个通信。

端口只是数据接收的一个窗口,理论上任何一个窗口可以由任意一个应用程序监听并把数据拿去解析,但在实际中往往有约定,尤其是服务器,应该采用约定的程序去监听约定的端口。

服务器端静态分配:(针对每个服务要明确一个端口,否则客户端不知道往哪发)
知名端口号:0~1023
注册端口号:1024~49151
客户端动态分配:因为请求总是从客户端发起,因此服务器总是能知道对方的端口号,因此客户端的端口号可以交给操作系统决定,根据时序分配法,每需要一个新的端口就在之前分配的加1.
范围:49152~65535

端口号一致,协议不一致也被认为是不同的通信。但只要端口号一致,上层提供的服务就是一致的,也就是一个端口只对应一种守护进程来监听,不管你是从哪种传输层过来的,不管可靠不可靠,去掉首部之后都是一样的,应用程序总是能够处理。

知名端口号:
TCP:
20:ftp-data
21:ftp
22:ssh
23:telnet
25:SMTP
53:DNS
80:http
179:bgp
UDP
53:DNS
67:DHCP
68:DHCP
161:SNMP
520:RIP

三、UDP

利用IP提供面向无连接的通信服务。只要一收到应用程序发来的数据就立即打上UDP头部发送到网络上,不管分片,也不会重发。

UDP应用:

  • 包总量较少的通信:DNS、SNMP
  • 即时通信:视频音频
  • 广播、多播通信:RIP、DHCP
您的支持是我创造源源不断地动力