传输层
内容概括:
- 理解传输层的作用
- 深入理解TCP的各项特性和机制
传输层
负责数据能够从发送端传输到接收端。即点对点的传输。
再谈端口号
端口号(port):
- 标识一个主机上进行通信的不同的应用程序;
- 在TCP/IP协议中,用“源IP”,“源端口号”,“目的IP”,“目的端口号”,“协议号”这样一个五元组来标识一个通信(用 netstat -n 查看);
- 范围划分: (2个字节)
0 - 1023:知名端口号,端口号是固定的。用 “cat /etc/services ”查看
1024 - 65535:操作系统动态分配的端口号,客户端程序的端口号。 - 一个进程可以绑定多个端口号;
- 但一个端口号不能被多个进程绑定, 若非要绑定,可以先绑定再fork(),fork之后子进程就继承了父进程的文件描述符,此时父子进程都关联到了这样一个具体的端口号上了。
netstat [选项]:查看网络状态
pidof [进程名]:通过进程名,查看进程id
UDP协议
UDP协议特点:
- 无连接
- 不可靠
- 面向数据报
- 全双工
UDP使用注意事项:
UDP不能应用于一个单次传输数据量很长的场景,因为一个UDP能传输的最大数据长度只有64K(UDP长度只占了两个字节);
如果非要用UDP进行传输一个超过64K的数据,就要在应用层手动的分包,多次发送,并在接收端手动拼接,但是UDP本身是不可靠传输,所以这样会非常不安全,可能导致部分数据丢失。
基于UDP的应用层协议:
- NFS:网络文件系统
- TFTP:简单文件传输协议
- DHCP:动态主机配置协议
- BOOTP:启动协议
- DNS:域名解析协议
TCP协议
TCP全称为“传输控制协议”,即要对数据的传输进行一个详细的控制。
TCP特点概述:
- 有连接
- 可靠传输
- 面向字节流
TCP协议段格式
- 16位源/目的端口号:表示数据是从哪个进程来,到哪个进程去。