tcp/ip学习第一步:网络中两台主机进行通讯,协议栈是如何处理数据报的.

    学习tcp/ip有几个月了,准备把自己所学的东西总结总结,当作一个备忘录,留做以后参考,由于本人才疏学浅,刚刚开始研究网络,肯定有许多想的不对或者不周到的地方,希望看到错误的朋友,高手们多多指教,小弟在此先谢过了.

    个人觉得,刚学习tcp/ip,最简单也是最基础的,应该弄明白两台主机进行通讯时,数据报在通过协议栈时是如何被处理的,这也是本篇博文的主题.

 

背景环境如下图:

      

 

问题描述:

Host X要通过浏览器从Server Y上的web service下载一个html页面.

 

通讯的过程简单如下:

Host X端:

1)应用层:

浏览器通过读取用户输入的url地址,通过dns转换为ip地址,即目标的ip地址,这里假设为208.201.237.37.这样,浏览器在应用层就发起一个与208.201.237.37的http会话,,然后通过tcp与目标主机上的web service进行通讯.

2)传输层

传输层通过一定的规则把http消息请求变成segment,如果需要,为每个segment都加上一个tcp头,然后加上源和目的端口号,因为是http,所以默认的目的地址端口号是80.

3)网络层

网络层主要关心与ip地址相关的信息,检查packet的ip地址和相关信息,然后根据路由表决定数据报的下一跳地址,这里是RT1,然后给数据报打上ip头,然后根据neighbor protocol找到对应ip地址的mac地址,把包传下去.

4)链路层

此层最常见的是以太网,为数据报打上mac头,不同的连接有不同的mac头.

 

此后由于在ip层通过路由表找到了下一跳地址,即RT1路由器地址,所以数据报被发送到RT1.

 

数据报到达路由器后的处理过程如下:

    通过mac头中的信息,可以看到L3层协议是ip协议,然后去掉mac头,检查目的ip地址是否是本地ip地址,如果不是则根据路由表,找到下一跳地址,然后重新打上mac头,发往下一跳.根据连接方式的不同,此时重新封装的mac头可能不同.

 

直到数据报到达目的主机后,通过协议栈交给web service应用程序.过程如下:

1)链路层

数据报到达后,剥离mac头,从mac头中可以看到L3层用的是ip,于是通过适当的函数,将数据报发送到ip层.

2)网络层

网络层知道本地主机的ip地址,看到数据报的目的ip是本机地址后,把数据报传给上层,网络层剥离ip头,从中可知道L4对应的协议和相应的处理函数,把数据报传递到上层.

3)传输层

剥离tcp头,根据目的端口号找到对应的应用程序,由于端口号为80,所以将原数据报发到web server.此时一次单向通讯过程结束.

 

从Server Y到Host X的过程类似.

 

总体过程见下图:

                    

注意:

1)除传输层,每层协议头中都包含有上层具体协议,以指示接收数据报时的数据走向.比如ip头中有tcp协议信息等等.

2)不同的链路层的mac头不一样,比如图中从Host X到RT1,从RT1到RT2的mac头,注意下.(图d和e)

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值