计算机网络系列之IP协议与网卡

时间:2024-03-31 15:02:48

一、网卡

在生活中,对网卡这个名词应该很熟悉,因为网卡是计算机上网不可或缺的一部分。也叫网络适配器。它在计算机网络中所处的位置就是数据链路层与物理层,兼顾两层的功能。它其实就是一个小型的嵌入式系统,上面有自己的处理器以及存储器(包括ROM和RAM)。计算机的CPU将网络层的IP数据报交给网卡之后,就可以去做别的事情了,由网卡的处理器复杂将IP数据报处理,并将信号转为电信号发送出去,以及接收在网络上传输过来的分组,然后通过中断通知计算机的CPU来把数据读走。这就是网卡的主要工作。
如果只是通过IP地址来进行转发分组,那么如果中间需要很多路由器来进行转发,如何去识别我该将分组转发给哪个路由器呢?所以提出了物理地址作为设备的地址唯一标识,也就是MAC地址,每个网卡具有唯一的MAC地址,这样根据MAC地址就可以找到如何转发了。MAC地址是一个48位的二进制数据。

二 IP协议

其实IP协议所在的网络层包括ARP协议、IP协议和ICMP协议。

2.1 IP协议

IP协议就是将前面讲解的TCP数据包或者UDP数据包的前面加上IP头部,然后将这个加了头部的新的数据包交给前面所说的网卡,由网卡发送出去就可以了。
计算机网络系列之IP协议与网卡

  1. 版本(version),其实就是IPv4,其他的版本都没有使用
  2. 首部长度(IHL),用来指示IP首部的长度,它占4位,它的单位是四个字节,所以IP首部最大为60个字节,因为4位二进制数最大为15,所以表示的数据最大为60.
  3. 区分服务(TOS),没有用上
  4. 总长度(total length),用来保存整个IP数据报的数据有多少个字节。
  5. 标识(identification),是在IP数据报发生分片时,用来识别是属于一个IP数据报的标识,如果标识一致,说明是属于一个IP数据报的。
  6. 标志 (F)占3位,但只使用了两位,一位用来标识是不是允许分片,就是允许把IP数据报分成几个IP数据报用来传输。还有一位用来标识是不是还有其他的分片。
  7. 片偏移 (Fragment offset),如果这个IP数据报是分片的,用来指示距离数据的起始位置的偏移,它的单位是8字节。比如说一个IP数据报的数据长度大于了网卡一次发送数据的最大长度,所以需要将这个IP数据报切分成几个IP数据报来发送,这个IP数据报的标识为5,数据大小为4000字节,网卡最大能发送1400字节,所以需要分成3个IP数据报,这四个IP数据报的标识都为5,第一个数据报的片偏移为0,第二个为175,第三个为350.
    计算机网络系列之IP协议与网卡
  8. 生存时间(TTL),在生成IP数据报时,将这个字段赋予一个初值,每经过一次转发,就将这个值减一,直到减到0,这个时候就将这个IP数据报丢掉,防止有IP数据报一直在网络中循环转发。
  9. 协议(Protocol),就是使用的是TCP还是UDP协议
  10. 首部检验和(Header checksum),就是检验首部在传输过程中是否出现错误
  11. 源地址和目的地址就是发送方和接收方的IP地址。

每个TCP或者UDP数据在传输到网络层都会加上这个IP数据包的头部。

2.2ICMP协议

ICMP协议是用来实现对于路由器或者某个主机传输过程中出现错误实现报告的协议。简单来说,就是将它规定的格式作为IP数据报的数据部分。
计算机网络系列之IP协议与网卡
我们常用的ping,用来测试两个网络是否连通就是使用了ICMP协议,是直接在应用层使用了网络层的协议,没有使用TCP和UDP。

2.3 ARP协议

前面介绍了MAC地址,每个计算机或者路由器在发送数据时都需要使用MAC地址才能知道到底转发到哪一个设备上,IP地址与MAC地址相比,只是个抽象的产物,将复杂的MAC地址进行了封装,让你以为实际是使用IP地址直接转发的。所以与DNS一样,还需要将IP地址转换为MAC地址来实现转发。这个协议就是ARP协议。计算机在网络中发出广播,“”这个IP地址是谁的啊?“,网络中的设备根据IP地址确定是不是自己,如果是,就回复,“是我的,MAC地址为xxx”,这样就得到了它的MAC地址,在网卡进行封装时就将这个地址添加到首部的目的地址中,将报文转发出去。整个IP地址与MAC地址在转发过程中的区别如下图所示
计算机网络系列之IP协议与网卡

三、总结

经过IP协议与网卡,浏览器的请求报文终于离开了计算机,进入到了局域网的部分,下一节将介绍局域网中的设备,集线器、交换机和路由器。

关注下面的,回复计算机网络,可以获得免费获得电子版。让我们一起快乐的玩编程。
计算机网络系列之IP协议与网卡