20170329_TCP/IP分层模型与通信示例

20170329_TCP/IP分层模型与通信示例


1、OSI  参考模型

  OSI  参考模型将通信功能划分为 7 个分层。从第一层开始到第七层结束,分别是:

(1)物理层:具体的硬件线路,比如以太网线路,负责 0-1  比特流、电压高低、光的闪灭等之间的转换。

(2)数据链路层:负责物理层面上互联的节点之间的通信传输,比如,与一个以太网相连的两个节点之间的通信。

(3)网络层:将数据传输到目标地址,这个目标地址可以是多个网络通过路由器连接而成的某一个地址,因此,这一层主要负责寻址和路由选择。

(4)传输层:起着可靠传输的作用,只在通信双方的节点上进行处理,而无需在路由器上进行处理。

(5)会话层:负责建立和断开通信连接,是数据流动的逻辑连接通路。

(6)表示层:将应用程序处理的信息转换为适合网络传输的格式,因此,它主要负责数据格式的转换。

(7)应用层:为应用程序提供服务并且规定应用程序间通信的相关细节。包括文件传输、电子邮件、远程登录等协议。


2、7 层通信简介:

(1)发送方从第7层、第6层一直到第1层、由上至下按照OSI 参考模型的顺序依次传输数据,并在每一个分层上,把从上一层传输过来的全部数据当作当前分层的“数据”,然后再根据当前分层的协议在该包数据的头部加上自己协议的“首部信息”

(2)接收方的行为和发送方刚好反过来,它从第1层、第2层一直到第7层、由下至上也按照OSI 参考模型的顺序依次传输数据,并在每一分层上,把从上一层传过来的数据进行“数据”和“首部信息”分离开来,然后再继续转发给上一分层,最终到达应用程序的数据恢复成原样。


3、端到端的通信示例:

  •     发送数据包:

(1)应用程序处理:应用程序进行编码处理,比如UTF-8 编码处理,将原始数据信息转换为网络传输需要的数据格式。

(2)TCP 模块的处理:TCP负责建立连接、发送数据、断开连接。TCP 提供的是将应用层发来的数据顺利发送至对端的可靠传输。    TCP 需要在应用层数据的前端附加上一个TCP 首部,在TCP 首部中包括了源端口号、目标端口号、序列号、校验和等信息,这就形成了TCP 包(TCP 首部 + TCP 数据,随后再将TCP包发送给IP 。

(3)IP 模块的处理:IP 将TCP 传输过来的TCP 包全部当作自己当前层的数据,并在TCP 首部的前端再次加上一个IP 首部,因此便形成了IP 包IP 首部 + TCP 首部 + TCP 数据)。    IP首部中包含了接收端IP 地址和发送端IP 地址,紧随IP 首部后面的信息还有用来判断其后面数据类型是TCP 还是UDP 的信息。    IP包生成后,参考路由器的路由控制表来确定接收这个IP 包的路由或者主机,随后IP 包便会发送给这些路由器或主机网络接口的驱动程序,以实现真正发送数据。这时,如果不知道接收端的MAC 地址,可以借助ARP 协议查找,一旦查找到了MAC 地址,就可以将这MAC 地址和IP 地址交给以太网的驱动程序,实现数据传输。

(4)网路接口——以太网驱动的处理:对于从IP 传输过来的IP 包,对于以太网来说就是数据而已,因此它只需要在IP 首部的前端再次加上自己的以太网首部,形成以太网包(以太网首部 + IP 首部 + TCP 首部 + TCP 数据,然后便可以进行发送处理。    其中,以太网首部包含了发送端MAC地址、接收端MAC地址、以太网协议类型信息等。

(5)经过数据链路的包:经过以太网的数据链路时的大致流程如下,包流动时分别被做了处理:

a、以太网首部 + IP 首部 + TCP 首部 / UDP 首部 + TCP 数据的首部和TCP 的数据本身 + 以太网尾部。

b、每个包的首部,都至少包含了:发送端和接收端的地址、上一分层的协议类型。

c、经过每个协议分层时,都必须有识别发送端和接收端的信息。以太网——MAC地址,IP——IP地址,TCP / UDP——用端口号作为识别两端主机的地址。

  •     接收数据包:

(1)网络接口——以太网驱动的处理:主机收到以太网包以后,首先从以太网包中找到MAC 地址,判断是否是发给自己的包,不是的话就丢弃,是的话就接收,然后再确定以太网协议所传过来的数据类型是否是IP ,若不是则根据ARP 协议查找处理,若是则继续发送给IP 模块

(2)IP 模块的处理:IP 模块接收到IP 包以后,判断这个包中的IP 地址是否是与自己的匹配,若匹配则根据包中后面的信息判断IP 包的数据类型是TCP 还是UDP ,按照相对应的关系传送给TCP 或UDP 处理。

(3)TCP 模块的处理:在TCP 中,首先会计算下校验和,判断数据是否被损坏。然后检查是否是按照序号接收数据的,最后确定端口号确定具体的应用程序。数据接收完毕后,接收端则发送一个“确认回执”给发送端,告诉它“接收端”已经顺利收到数据。如果这个回执单没有到达发送端,则发送端认为接收端没有收到自己发送的数据,因此便会一直重复的发送,直到收到这个确认回执单为止。

(4)应用程序的处理:接收端应用程序会解析这个数据。



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值