《图解TCP/IP》--TCP/IP协议分层模型与通信

一、TCP/IP与OSI参考模型关系

  

  OSI参考模型注重通信协议必要的功能是什么,而TCP/IP则更强调在计算机上实现协议应该开发哪种程序。

二、TCP/IP协议分层模型各个层次讲解

  1. 硬件(物理层)

  TCP/IP的最底层是负责数据传输的硬件。这种硬件就相当于以太网或电话线路等物理层的设备。

  2. 网络接口层(数据链路层)

  网络接口层利用以太网中的数据链路层进行通信,因此属于接口层。也就是说,把它当作让NIC起作用的“驱动程序”也无妨。

  3. 互联网层(网络层)

  互联网层使用IP协议,它相当于OSI模型中的第三层网络层,IP协议基于IP地址转发分包数据。

  

  (1)IP协议

    IP是跨越网络传输数据包,使整个互联网都能收到数据的协议,IP协议使数据能够发送到地球的另一端,这期间它使用IP地址作为主机的标识。

    虽然IP也是分组交换的一种协议,但是它不具有重发机制,即使分组数据包未能达到对端主机也不会重发,属于非可靠性传输协议。

    连接互联网的所有主机和服务器必须都实现IP的功能,其它连接互联网大的网络设备(网桥、中继器、集线器)没必要一定要实现IP或TCP的功能。

  (2)ICMP协议

    IP数据包在发送过程中一旦发生异常而无法到达对端目标地址时,需要给发送端发送一个发生异常的通知。ICMP就是为了这个功能定制的。

  (3)ARP协议

    从分组数据包的IP地址中解析出物理地址(MAC)的一种协议。

  4. 传输层

  传输层的主要功能就是能够让应用程序之间实现通信。计算机内部同一时间内运行着多个程序,为此必须分清是哪些程序与哪些程序在通信,识别的就是这些应用程序的端口号。

  

  (1)TCP

    TCP是一种面向有连接的传输层协议,保证两端通信主机之间可以达到,还可以正确处理在传输过程中丢包、传输顺序乱掉等异常情况,有效利用带宽缓解网络拥堵。

  (2)UDP

    UDP是一种面向无连接的传输层协议,UDP不会关注对方是否接收到了发送的数据。

  5. 应用层(会话层、表示层、应用层)

  TCP/IP分层中把OSI的会话层表示层应用层的功能都集中到了应用程序中实现。TCP/IP的应用的架构绝大多数属于客户端/服务端模型,这种通信模式中,提供服务的程序会预先被部署在服务器中,等待接受任何时刻客户可能发送的请求。

  

  (1)WWW

    WWW主要使用的协议有实现浏览器和服务端之间的通信协议:HTTP(超文本传输协议)、传输的主要格式:HTML(超文本标记语言)、URL(统一资源定位符)。

  (2)E-Mail

    发送电子邮件使用到的协议有MIME、SMTP

  (3)FTP

    文件传输协议是将某个计算机硬盘的文件转移到本地的硬盘中所使用的协议,会建立两个TCP连接,分别是发送出传输请求时用到的控制连接和实际传输数据时用到的数据连接。

  (4)远程登录(TELNET、SSH)

  (5)网络管理(SNMP)

 三、TCP/IP分层模型通信实例

  1. 数据包首部

  图一:

  

  图二:

  

  图二中每个分层,都会对所发送的数据附加一个首部,在这个首部包含了必要的信息,如发送的目标地址以及协议相关信息。通常,为协议提供的信息为包首部,所发送的内容为数据。

  注:包、帧、数据包(报文)、段、消息区别:

  包是全能性述语;帧用于表示数据链路层中包的单位;而数据包是IP和UDP等网络层以上分层的包的单位;段表示TCP数据流中的信息;消息是指应用协议中数据的单位。

  

  2. 发送数据包

  应用场景:假设甲给乙发送电子邮件,内容为“早上好”。从TCP/IP通信角度上看,是从计算机A向计算机B发送电子邮件。
  (1)应用程序处理:
    将文本内容进行编码转换(一般采用UTF-8)。点击“发送邮件”,建立TCP连接。并利用这个TCP连接发送数据。它的过程首先是将应用的数据发送给下一层TCP再做实际的转发处理。
  (2)TCP处理:
    根据应用指示,TCP会负责建立连接、发送数据、断开连接,TCP提供将应用层发来的数据顺利发送至对端的可靠传输。
    为了实现TCP的这一功能,需要在应用层数据的前端附加一个TCP首部。TCP首部记录了:源端口号和目标端口号(用以识别发送主机跟接收主机上的应用);序号(用以发送包中哪部分是数据);校验和(用以判断数据是否被损坏);随后将附加TCP首部的包再发送给IP。
  (3)IP处理
    IP将TCP传过来的TCP首部+应用数据合起来视作自己的数据,并在TCP首部的前端加上自己的IP首部。因此,IP数据包中IP首部后紧跟TCP首部,然后才是数据首部及本身。IP首部中包含:接收端IP地址和发送端IP地址,紧跟IP首部后的,还有用于判断其后面数据是TCP还是UDP的信息。
    IP包生成之后,参考路由控制表(存储一系列IP地址的映射表)决定是否接受此IP包的路由或主机。随后IP包将被发送给连接这些路由或者主机网络接口的驱动程序,以实现真正的发送数据。如果尚不知道接受端的MAC地址,可以利用ARP(Address Resolution Protocol)查找。只要知道了对端的MAC地址,就可以将MAC地址和IP地址交给以太网的驱动程序,实现数据传输。
  (4)网络接口(以太网驱动)处理。
    从IP传过来的IP包,对于以太网驱动而已,亦是数据,给数据附上以太网首部并进行发送处理。以太网首部包含:接收端MAC地址;发送端MAC地址;标识以太网类型的以太网数据协议。根据上述信息产生的以太网数据包将通过物理层传输给接收端。发送处理中的FCS(Frame Check Squeeze)由硬件计算。添加至包的最后。设置FCS是为了判断数据包是否由于噪声而被破坏。
  
  过程:
  
  一个完整数据包的主要内容:

  

  3. 数据包接受处理

  包接受流程是发送流程的逆序过程。

  (1)

猜你喜欢

转载自www.cnblogs.com/chenloveslife/p/9616275.html
今日推荐