`

《ASCE1885的网络编程》の以太网接口堆栈

 
阅读更多

网络工作在通信协议上,现在非常普遍的是使用TCP/IP的以太局域网(Ethernet LAN)。在局域网中,计算机可以用同轴电缆、双绞线或光纤连接起来。现在大多数网络使用双绞线连接。

以太网包含以下几层:

1)介质访问控制(MAC)

以太网的最底层是硬件层,称为介质访问控制(Media Access Control)层。网卡属于该层,它包含了串行网络接口和一个控制器,控制器将原始数据转换成电子信号,并发送到正确位置。

以太网接口的各层有不同的寻址方法,在最下面的MAC层,寻址是通过MAC号进行的。

MAC号是一个48位的标识,它被硬性分配到每一个网络接口单元,这些号码是由IEEE注册权威分配的,他们保证每个以太网分点都有全世界唯一的号码。MAC号通常用以冒号分割的16进制数表示,如:14:74:A0:17:95:D7

为了将封包发送到其他网络接口,封包应该包含MAC号。LAN使用非常简单的方法,即广播发送封包到正确接口。这意味着网卡发送封包到它所能到达的每个接口,每个接收到封包的接口查看封包的目的MAC号,仅在自己的MAC号相同时处理。这个方法在局域网内容易实现,效率很高,但在更大的网络(WANinternet)上,很明显不能使用这个方法,WAN使用更好的路由机制。这里强调一点的是,在最底层寻址是通过MAC号进行的。

2)网际协议层(IP

硬件层之上是IP层,IP层使用的当然是IP地址的寻址方式了。最广泛使用的是Ipv4,它是一个32位值,以众所周知的点分十进制格式表示,如209.217.52.4。与MAC地址不同,IP地址没有集成到硬件中,它是在自己的软件层设置的。

互联网使用IP地址来唯一标识一个计算机,IP地址可以通过软件分配给网络接口,此时,会把IP地址和网络接口的MAC地址关联在一起。为了使用IP寻址,关联的MAC地址需要保存起来,这由ARPAddress Resolution Protocol,地址解析协议)负责。每个主机都维护了一个记录IPMAC地址对的清单,如果用户使用的IP地址不在此清单上,主机发出一个询问包到局域网的其他计算机,以获取与之相匹配的MAC地址。如果此局域网有计算机可以识别此IP地址,它送回对应的MAC地址;如果没有,封包就会被送到网关(gateway---发送封包到外部网络的计算机。

IPMAC的转化实际上是在数据链接层进行的。

IP协议添加源地址和目的地址到封包,同时也添加其他封包属性,如TTL hops(time to live hops,生存时间),使用的协议版本、校验头等。

3)传输控制协议(TCP)层

IP层之上是TCP层(或者UDP层)。TCP为寻址增加了最后一个限制---端口号。

IP地址用来寻址指定的计算机或者网络设备,而端口号用来确定运行在目的设备上的哪个应用程序应该接收这个封包。端口号是16位,范围在0~65535之内。在设备上寻址端口号时经常使用的符号使“IPportnumber”,例如209.217.52.4:80

IP层不关心传输是否成功,但TCP层关心。如果一个封包在到达目的的路途中丢失了,TCP重发此封包;如果封包到达的顺序与原始顺序不同,TCP会重新为它们排序。

4)软件层

TCP层之上是网络软件。在Windows中,应用程序不直接访问TCP层,而是通过Winsock API访问。软件层提供了非常方便的访问网络的方式,由于所有下层协议的存在,在软件层不必担心封包、封包大小、数据错误、对丢包的重发等。

以太网接口堆栈:


软件层包含了用户请求发送的数据,有时这块数据会有固定的格式(如HTTPFTP协议)。用户数据首先取得包含源端口号和目的端口号的TCP头,然后添加IP头,它包含发送者和接收者的IP地址。最后数据链路层添加以太网头,它指定了发送者和接收者的MAC地址,这是真正通过电缆发送的数据。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics