Tcp/Ip协议族简介

Tcp/IP协议族

tcp/ip协议族是一个四层协议系统,自低而上分别是数据链路层、网络层、传输层和应用层。
Tcp/Ip协议族简介

数据链路层

数据链路层:实现了网卡接口的网络驱动程序(局限、具体,在物理层提供的服务基础上为网络层提供服务),以处理数据在网络媒介上的传输。常用ARP协议将ip地址转为物理地址(MAC),通过物理地址寻址下一个机器,RARP协议将物理地址转为ip地址,一般会记住自己的ip,很少用到。涉及到的设备网卡、网桥、交换机。

网络层

网络层:数据包的选路和转发。WAN通过众多分级的路由器连接LAN和主机,因此两个主机之间不是直接相连的,而是通过多个中间节点(路由器)连接的。网络层的作用就是选择这些中间节点,来确定两台主机间的通信路径。网络层对上层协议隐藏了网络拓扑的细节,在传输层和应用层来看,通信的双方是直接相连的。
ip协议:为上层协议提供无状态、无连接、不可靠的服务。无状态是指通信双方不同步传输数据的状态信息,数据的发送、传输和接受都是相互独立的,无上下文关系,无状态最大的缺点是接收端无法监测乱序和重复,优点是简单高效。面向连接的协议,如tcp协议,能够处理乱序的、重复的报文段。无连接是指ip通信双方都不长久的维持对方的任何信息,这样上层协议每次发数据的时候都需要带上ip信息。不可靠是指ip协议不能保证数据包准确地到达接收端。
why 面向连接的协议能够处理乱序的、重复的报文段 ? tcp协议有对应的机制来保障,其他面向连接的协议也有吗?

ip协议分片和重组,ip数据报超过帧MTU时,会被分片传输,可能发生在发送端,也可能发生在中转路由器上,而且在传输过程中多次被分片,只有在接受端,这些分片才有可能在内核的ip模块被重组(ip头部中提供的分片信息)。

ip路由:ip协议的核心任务就是数据报的路由,即数据报到目标机的路径。ip数据报应该发给哪个下一跳路由或者目标机器以及使用哪个网卡发送就是ip的路由过程(核心数据结构路由表)。
Tcp/Ip协议族简介

传输层

传输层:为两台主机上的应用程序提供端到端的通信。与网络层逐级跳的通信方式不同,传输层只关心起始端和目的端,而不关心数据包的中转过程。
tcp协议:为应用层提供可靠的、面向连接的基于流的服务。使用超时重连、数据确认等方式来确保数据到达目的端;通信的双方必须建立连接才能通信,并在内核中为该连接维持必要的状态信息和存储空间,如连接的状态、读写缓冲区、各种定时器,通信结束,双方必须关闭连接以释放内核空间;tcp服务是基于流的,基于流的数据没有边界限制,数据可以源源不断从通信的一段传给另一端,发送端可以逐字节地将数据写入输出流,接收端也可以逐字节从输入流读取数据。
Tcp/Ip协议族简介
Tcp/Ip协议族简介

应用层

应用层:负责处理应用程序的逻辑。传输层、网络层、数据链路层负责数据的网络通信细节,必须高效稳定,因此他们都在内核空间实现,而应用层在用户空间实现。

数据封装和分用

数据链路层分装后的数据为数据帧,帧是最终在物理媒介上传输的字节序列。
Tcp/Ip协议族简介
数据分用:分用是一个反向过程,依靠头部字段信息来实现。

问题

数据链路层、网络层、传输层为啥在内核空间实现?应用层为啥不在内核空间实现?

答:数据链路层、网络层、传输层在内核空间实现传输高效,稳定呢?,应用层有用户的复杂、多样需求和逻辑,在内核空间实现,会使内核变得非常庞大,实现也比较复杂,不够灵活,且不便于移植。

网络层和数据链路层为什么不合并?