1, 死也不能忘记的四个层
1数据链路层
实现了网卡接口的网络驱动程序, 以处理数据在物理媒介 (比如以太网, 令牌环等) 上的传输. 主要的协议 ARP 和 RARP
经过数据链路层封装的数据成为帧, 有以太网帧, 令牌环帧, 其中, 以太网帧的格式:
MTU 最大传输单元, 即帧最多能携带多少上层协议数据(比如 IP 数据报), 正因为如此, 过长的 IP 数据报可能需要分片传输.
说明: 以太网帧的 MTU=1500, 可以通过 ifconfig,netstat 查看, 因此它携带的 IP 数据报的数据部分最多是 1480 个字节(IP 数据报头部占 20 个字节)
2网络层
主要的协议是 IP 和 ICMP
功能:
路由选择: 通信的两台主机不是直接相连的, 而是经过多个中间节点 (路由器) 连接, 网络层的任务就是选择这些中间节点, 已确定两台主机之间的通信
IP 协议是根据数据包的目的 IP 地址来决定如何投递它. 如果数据包不能直接发送给目标主机, 那么 IP 协议将会为数据包选择合适的下一跳路由器, 并将数据包交付给该路由器来转发. 多次重复该过程, 直到数据包到达目的主机, 或者由于发送失败数据包而被丢弃. 可以发现, 网络层的 IP 协议使用逐跳的方式确定通信路径.
ICMP 协议 (因特网控制报文协议) 主要用于检测网络连接, 分为两种类型: 差错报文, 查询报文. 详细介绍看图示:
3传输层
主要协议: TCP,UDP,SCTP
功能: 为两台主机上的应用程序提供端到端 (end-to-end) 的通信. 与网络层的 IP 协议使用逐跳的通信方式缺人通信路径不同, 传输层只关心 src 和 dst, 并不关心数据包的中转过程.
4应用层
在用户空间实现, 主要协议: telnet,OSPF,DNS,ping 程序等
2,TCP/IP 工作原理以及流程
1封装
Q1: 上层协议是如何使用下层协议提供的服务的呢?- 封装
A1: 应用程序的数据在发送到物理网络上之前, 将沿着协议栈从上向下一次传递, 每层协议都将在上层数据的基础上加上自己的头部信息.
TCP->TCP 报文段, UDP->UDP 数据报, IP->IP 数据包, 数据链路层 ->帧(以太网帧, 令牌环帧)
说明: TCP,UDP 对数据的封装类似, 不同的是, UDP 无需为数据保存副本, 因为 UDP 是不可靠的服务, 当 UDP 数据报被成功发送之后, UDP 缓冲区中的该数据报就被丢弃了(如果应用程序检测到该数据报未能被接收方正确接收, 并打算重发该数据包, 则应用程序需要从用户空间将该数据拷贝到 UDP 内核发送缓冲区中).
2分用
Q2: 当帧在物理网络上传输到目的主机时, 将会沿着协议自底向上依次传递, 具体执行过程?- 分用
A2: 各层协议将依次处理帧中本层负责的头部数据, 以获取所需要的信息, 并最终将处理后的帧交给目标应用程序.
(从下到上)以太网帧的分用过程, 图示:
可以看到:
1. IP,ARP,RARP 协议都使用帧传输数据, 所以帧的头部中以太网帧的类型来区分它们. IP,ARP,RARP 对应的类型分别是: 0x800,0x806,0x835.
2. ICMP 协议, TCP 协议, UDP 协议都是用 IP 协议, 所以 IP 数据报的头部采用 16 位的协议字段来区分它们
3. TCP,UDP 则通过 16 位的端口号字段区分上层应用程序
3对等层通信
在两个端系统的同一层上, 双方都有对应的一个或多个协议进行通信
来源: http://www.bubuko.com/infodetail-3073185.html