网络编程(二)

来源:互联网 发布:家具画图软件 编辑:程序博客网 时间:2024/05/01 15:04
 

上次讲到的TCP和UDP,这次讲讲网际协议,也就是IP协议。

TCP和UDP是传输层的协议,其数据报中含有有应用层要发送的数据和数据报校验和传输的方式,但其中并不涉及任何IP地址或MAC地址,所以才需要网络层对TCP或UDP数据报进行封装,构造出一个新型数据报,并在其中加入源IP地址和目的IP地址。而IP地址实现了不同子网中设备“逻辑”地址的统一化,因为物理设备的物理地址可能规则不一,所以也就需要物理地址与逻辑地址之间的一种映射关系来实现网络的互连。

由于网络数据的传输最终的实现还得再物理介质中进行,因此在网络层的数据报在数据链路层进行封装,在其首部添加源IP地址和目的IP地址相应的MAC地址,在上网的时候,我们经常通过域名或者IP地址去直接访问服务器,但最终我想都应该是转换到MAC到MAC之间的访问。为了实现网络的互连,出现了IP,为了记忆方便出现了域名地址。

而在物理地址与逻辑地址之间的桥梁则是ARP(Adress Resolution Protocol)和RARP(逆地址解析协议),有些书籍将ARP协议归纳到网络层,但论作用而言,链路层更需要它,因为链路层的MAC帧首部的源、目的主机的MAC地址来自ARP请求返回的结果(动态映射)。至于ARP的工作原理,倒不深究。当链路层将IP数据报封装成MAC帧后,则由源主机将其发送到网络中,即根据目的MAC地址找到目的主机或下一个路由器。有本书是这样描述的:“路由器会根据IP数据报中的目的IP地址进行传输路径的选择,并根据所选择的传输路径进行IP数据报的转发”。但我有点疑惑,物理介质中是以帧数据传输,就算帧数据传送到目的主机上后,它也需要经过目的主机多层“解封”过程才能得到相应数据报,也就是说必须去除了MAC帧的头部和尾部才能得到IP数据报吧。难道路由器有此功能?对帧数据先“解封”,再封装?希望有人替我解惑一下、、、呵呵

 就如上面所说,帧数据传送到目的主机上后需进行一系列“解封”过程才能得到应用程序想要的数据(当然,中间还有校验、排序等细节),这应该算是一个大致的通信过程吧。不容易啊….

原创粉丝点击