- 1. 传输层的作用
- 1.1. 传输层的定义
- 1.2. 通信处理
- 1.3. TCP和UDP
- 1.3.1. TCP
- 1.3.2. UDP
- 1.3.3. 套接字
- 2. 端口号
- 2.1. 端口号的定义
- 2.2. 根据端口号识别应用
- 2.3. 通过IP地址、端口号、协议号进行通信
- 2.4. 端口号如何确定
- 2.4.1. 标准既定的端口号
- 2.4.2. 时序分配法
- 3. UDP
- 4. TCP
1. 传输层的作用
1.1. 传输层的定义
IP首部有个协议字段,用来标识传输层协议,识别数据是TCP的内容还是UDP的内容。同样,传输层,为了识别数据应该发给哪个应用也设定了这样的编号,即端口。
1.2. 通信处理
应用协议大多以C/S形式运行,即服务端需提前启动服务,监听某个端口,当客户端往该端口发送数据时,可以及时处理请求。
服务端程序在UNIX系统中称为守护进程,例如HTTP的服务端程序为httpd;ssh的服务端程序为sshd。UNIX中不必要逐个启动这些守护进程,而是由超级守护进程inetd(互联网守护进程)启动,当收到客户端请求时会创建(fork)新的进程并转换(exec)为httpd等各个守护进程。根据请求端口分配到对应的服务端守护进程上处理。
1.3. TCP和UDP
1.3.1. TCP
TCP是面向连接、可靠的数据流。流就是不间断的数据结构,可理解为水管中的水流。虽然可以保证发送顺序,但犹如没有间隔的发送数据流给接收端。例如:发送10次100字节的消息,接收端可能会收到一个1000字节连续不断的数据。TCP为实现可靠传输,实行“顺序控制”和“重发控制”;还具备“流量控制”、“拥塞控制”、提高网络利用率等。TCP可以类比为“打电话”,有去有回。
1.3.2. UDP
UDP是不具备可靠性的数据报协议,可以确保发送消息的大小,但不能保证消息一定到达,应用有时会根据自己的需要进行重发处理。UDP可以类比“发短信”,有去无回。
1.3.3. 套接字
应用在使用TCP或UDP时会用到系统提供的类库,即API(应用编程接口),通信时会用到套接字(socket)的API。应用程序利用套接字,可以设置对端的IP地址、端口号,并实现数据的发送与接收。
2. 端口号
2.1. 端口号的定义
类别 | 地址 | 层 | 说明 |
---|---|---|---|
端口号 | 程序地址 | 传输层 | 同一个计算机中不同的应用程序 |
IP地址 | 主机地址 | 网络层 | 识别TCP/IP网络中不同的主机或路由器 |
MAC地址 | 物理地址 | 数据链路层 | 在同一个数据链路中识别不同的计算机 |
把数据传输比作快递传递;IP地址就像你的家庭地址;那么端口号相当于你家具体的收件人;知道了家庭地址和收件人才能将快递准确送达。
2.2. 根据端口号识别应用
2.3. 通过IP地址、端口号、协议号进行通信
5个信息唯一标识一个通信:源地址IP、目标地址IP、协议号、源端口号、目标端口号。
2.4. 端口号如何确定
2.4.1. 标准既定的端口号
该方法也叫静态方法,是指每个应用程序都有其指定的端口号。例如HTTP、FTP等应用协议使用的端口号,这类端口号称为知名端口号,一般由0-1023的数字分配而成。除知名端口号外,还有一些端口号也被正式注册,分布在1024-49151的数字之间。这些端口可用于任何通信用途。
2.4.2. 时序分配法
该方法也叫动态分配法,服务端有必要确定监听端口号,但接受服务的客户端没必要确定端口号。客户端可以不用自己设置端口号,由操作系统进行分配。操作系统为每个应用程序分配互不冲突的端口号。例如,新增一个端口号则在之前的端口号上加1,动态分配的端口号取值范围:49152-65535。
3. UDP
UDP:User Datagram Protocol的缩写,提供面向无连接的通信服务,在应用程序发来数据收到那一刻则立即原样发送到网络上。即使出现丢包也不负责重发,包出现乱序也不能纠正。
UDP可以随时发送数据,本身处理简单高效,但不具备可靠性,适合以下场景:
- 包总量较少的通信(DNS、SNMP等)
- 视频、音频等多媒体通信(即使通信)
- 限定于LAN等特定网络中的应用通信
- 广播通信(广播、多播)
4. TCP
TCP:Transmission Control Protocol (传输控制协议),TCP实现了数据传输时的各种控制功能,可以进行丢包重发,乱序纠正,控制通信流量的浪费。
待续。。。
参考:
- 《图解TCP/IP》