网络协议
1.1、ISO-OSI 7层网络模型
1.2、应用层协议
1.3、表示层协议
1.4、会话层协议
1.5、传输层协议
1.6、网络层协议
1.7、数据链路层协议
1.8、物理层协议
1.9、注意事项

不同的应用层协议可能基于不同的传输层协议,如FTPTELNETSMTP协议基于可靠的TCP协议。 TFTP、SNMP、RIP基于不可靠的UDP协议。

有些应用层协议占用了两个不同的端口号,如FTP的20、21端口,SNMP的161、162端口。这些应用层协议在不同的端口提供不同的功能。 如FTP的21端口用来侦听用户的连接请求,而20端口用来传送用户的文件数据。再如,SNMP的161端口用于SNMP管理进程获取SNMP代理的数据, 而162端口用于SNMP代理主动向SNMP管理进程发送数据。

有些协议使用了传输层的不同协议提供的服务。如DNS协议同时使用了TCP 53端口和UDP 53端口。 DNS协议在UDP的53端口提供域名解析服务,在TCP的53端口提供DNS区域文件传输服务。

1.10、Socket

在每个TCPUDP数据段中都包含源端口和目标端口。 通常,我们把一个IP地址和一个端口号合称为一个套接字(Socket),而一个套接字对(Socket pair)可以唯一地确定互连网络中每个TCP连接的双方(客户IP地址、客户端口号、服务器IP地址、服务器端口号)。

由于在传输层上只有TCPUDP两个协议,这两个协议都依赖网络层的IP协议。所以通常在操作系统层面把这些协议给实现了,封装成API, 通常把这个API就称为Socket API

当然不同的语言也会在系统的Socket API基础上再做一次封装。