现在 Internet 使用的主流协议族是 TCP/IP 协议族, 它是一个分层, 多协议的通信体系.
TCP/IP 协议族体系结构以及主要协议
TCP/IP 协议族是一个四层协议系统, 自底面上分别是数据链路层, 网络层, 传输层和应用层. 每一层完成不同的功能, 且通过若干协议来实现, 上层协议使用下层协议提供的服务.
数据链路层
数据链路层实现了网卡接口的网络驱动程序, 处理数据在物理媒介上的传输. 常用的两个协议是 ARP (Address Resoleve Protocol 地址解析协议) 和 RARP (Reverse Address Resoleve Protocol 逆地址解析协议), 它们实现了 IP 地址和机器物理地址之间的相互转换.
网络层
网络层实现数据包的选路和转发. 由于通信的主机一般不是直接相连的, 而是通过多个中间节点 (路由器) 连接的, 网络层的任务就是选择这些节点, 以确定通信路径. 网络层的核心协议是 IP (Internet Protocol 因特网协议). 另一个重要的协议是 ICMP (Internet Control Message Protocol 因特网控制报文协议), 是 IP 协议的重要补充, 主要用于检测网络连接, ping 程序就是使用的 ICMP 协议.
传输层
传输层为两台主机上的应用程序提供端对端的通信, 主要有三个协议: TCP,UDP,SCTP.
TCP (Transmission Control Protocol 传输控制协议) 为应用层提供可靠的, 面向连接的和基于流的服务. 使用超时重传, 数据确认等方式来确保数据包被正确地发送到目的端, 使用前必须先建立连接, 内核维持一些连接信息, 发送端逐个字节地向数据流 (没有边界即长度限制) 中写入, 接收端逐个字节接收, 通信结束时双方必须关闭连接以释放这些内核数据.
三次握手建立连接与四次挥手断开连接
UDP (User Datagram Protocol 用户数据报协议), 与 TCP 相反, 提供不可靠, 无连接和基于数据报的服务, 每个数据报都有一个长度.
SCTP (Stream Control Transmission Protocol 流控制传输协议) 是为传输电话号码而设计的,
应用层
应用层负责处理应用程序的逻辑, 在用户空间来实现. 数据链路层, 网络层, 传输层负责处理网络通信, 这部分在内核空间中实现, 必须稳定又高效.
封装
应用程序数据在发送到物理网络上之前, 沿着协议栈从上往下依次传递, 每层协议都将在上层数据的基础之上加上自己的头部信息, 有时包括尾部数据, 以实现该层的功能, 这个过程就叫做封装.
分用
当帧到达目的主机时, 将沿着协议栈自底向上依次传递, 各层依次处理帧中本层负责的头部数据以获取所需的信息, 并最终将处理后的帧交给目标程序, 这个过程称为分用, 是依靠头部信息中的类型字段实现的.
arp 协议工作原理
ARP 协议能实现任意网络层地址到任意物理地址的转换, 主机向自己所在的网络广播一个 ARP 请求包含目标机器的网络地址, 此网络上的其他机器都将收到这个请求, 但只有被请求的目标机器会回应一个 ARP 应答, 其中包含自己的物理地址.
dns 工作原理
DNS 是一套分布式的域名服务系统, 每个 DNS 服务器上存放着大量的机器名和 IP 地址的映射, 并且是动态更新的, 众多网络客户端程序都是用 DNS 协议来向 DNS 服务器查询目标主机的 IP 地址.
Socket 和 TCP/IP 协议族的关系
Socket 是一套通用网络编程接口, 不但可以访问内核中 TCP/IP 协议栈, 而且可以访问其他网络协议栈.
来源: https://www.cnblogs.com/luke44/p/10101047.html