TCP/IP协议族不像理论的协议关系有7层, 前者只有四层. 自底而下分别是 : 数据链路层, 网络层, 传输层, 应用层; 每一层对应不同的功能. 本节只是简单的介绍一下关于这四层协议的功能.
数据链路层
-
数据链路层实现了网卡接口的网络驱动程序, 以处理数据在物理媒介(以太网等)上的传输过程.
数据链路层常用的是连个协议 :
ARP协议
和RARP协议
.网络通信看上去是上层之间的直接通信, 其实只是我们感受不到下层所做的工作. 而在数据链路层本机需要找到目标主机的
MAC
地址才行, 而在传输过程中我们只需要知道目标的IP地址即可, 那IP地址怎么转化成MAC地址呢? 这就需要ARP协议
.ARP协议
是将IP地址转化成对应的MAC地址
, 而RARP协议则是做的相反的工作. 这两个协议也就保障了底层协议的通信.ARP
请求则是通过广播, 同时主机会暂时使用缓存来报存ARP地址. 这是保证多次通信过程可以避免广播的次数.
- 数据链路层负责接收IP数据包并通过网络发送, 或者从网络上接收物理帧, 抽出IP数据包, 交给IP层.
网络层
网路层是实现数据包的分组和转发. 如 IP数据报分片
网络层还对上层隐藏了网络拓扑连接的细节, 使上层通信感觉就像是相互直连的.
网络层不仅包含的有IP协议
还包含ICMP协议
.
ICMP协议
主要用于检测网络连接. 其协议主要分为两个部分 : 1 差错检测; 2 查询报文. 我们经常验证对端是否接入网络, 直接使用ping IP
, 这其实就是发送ICMP查询报文来验证.
传输层
传输层为两台主机上的应用提供了端到端的通信. 而通信过程的细节则被下层所隐藏, 只感觉传输层与传输层像是直接连接的.
传输层的协议主要有三个 : TCP协议(传输控制协议) [2], UDP协议(户数据报协议)[3], SCTP协议.
TCP是面向连接的协议, 它提供可靠的报文传输和对上层应用的连接服务. 因此, 除了基本的数据传输外, 它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能.
UDP是面向无连接的不可靠传输的协议, 主要用于不需要TCP的排序和流量控制等功能的应用程序.
应用层
应用层负责处理应用程序的逻辑.
应用层的协议有很多, 这里简单举几个例 :
- 文件传输协议(FTP). 一般上传下载用FTP服务, 数据端口是20H.
- 电子邮件传输协议(SMTP)
- 域名服务(DNS)). 域名解析服务, 提供域名到IP地址之间的转换, 使用端口53.
- HTTP超文本传输协议. 用于实现互联网中的WWW服务, 使用端口80.
SOCKET
套接字(socket)是通信的基石, 是支持TCP/IP协议的网络通信的基本操作单元. socket
并不是协议, 它只是对TCP/IP
协议的封住, 它是网络通信过程中端点的抽象表示, 也只是一个接口.
socket
的API提供两点功能 :
- 将应用程序数据从用户缓冲区复制到
TCP
内核发送缓冲区; 或者是从TCP/UDP
内核缓冲区将数据复制到用户应用程序缓冲区. - 可通过调用部分函数(如 setsockopt[4])来修改内核各层协议的某些头部信息或其他数据结构, 从而控制底层通信行为.
小结
本节只是对TCP/IP协议族做了简要的总结, 最后也加了关于socket
的理解.
- 四层协议的功能
- socket是接口不是协议