《图解TCP/IP》--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) 网络接口层的处理

    主机收到以太网包以后,首先从以太网的包首部找到MAC地址判断是否为发送给自己的包,如果不是则丢弃数据;如果是接收了是自己的包,就查找以太网包首部中的类型域从而确定以太网协议所传送过来的数据类型,这个例子中显然是IP包,因此再将数据传给处理IP的子程序,如果不是IP而是诸如ARP的协议,就把数据传给ARP处理。

  (2)IP模块的处理

    IP模块收到IP包首部及以后的数据部分以后,如果判断出包首部中IP地址和自己IP地址匹配,则可接收数据并从中查找上一层协议。如果上一层是TCP就传给IP包首部之后的部分传给TCP处理,如果是UDP同理,对于有路由器的情况下,接收端往往不是自己的地址,此时就需要借助路由控制表才转发数据。

  (3)TCP模块的处理

    在TCP模块中,首先会计算一下校验和来判断数据是否损坏,然后检查是否在按照序号接受数据,最后检查端口号来确定具体的应用程序。数据接收完毕后,接收端则发送一个“确认回执”给发送端,如果这个信息未能达到发送端,那么发送端会认为接收端没有接收到数据而一致反复发送。

  (4)应用程序的处理

    接收端应用程序会直接接收发送端发送的数据。 通过解析数据可以获知邮件的收件人地址是乙的地址,如果主机B上没有乙的信箱,那么主机B则会返回给发送端一个“无此收件地址”的报错信息,如果有则返回“处理正常”,如果发送成功但未能成功保存在主机B上则会返回一个“处理异常”。

 

原文地址:https://www.cnblogs.com/chenloveslife/p/9616275.html

时间: 2024-08-01 20:20:20

《图解TCP/IP》--TCP/IP协议分层模型与通信的相关文章

柯南君:看TCP/IP 之一 (协议分层)

柯南君:今天无意中翻到一本书<TCP/IP 详解 >,据说是一本不错的书,就情不自禁的读了起来,果不其然,很不错,通俗易懂,在这里,就加一点自己的想法,和大家分享一下: 为什么需要TCP/IP? 很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但T C P / I P协议族允许它们互相进行通信.这一点很让人感到吃惊,因为它的作用已远远超出了起初的设想.T C P / I P起源于6 0年代末美国政府资助的一个分组交换网络研究项目,到9 0年代已发展成为计算机之间最常应用的组网形

OSI模型和TCP/IP分层模型?看完这一篇就够了!

最近看了<图解TCP/IP>这本书,于是将这本书中的精髓做一个归总,以便之后查阅. 1.何为协议? 1.1 介绍 协议就是计算机与计算机之间通过网络实现通信事先达成的一种"约定".这种"约定"使那些由不同厂商的设备.不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信.反之,如果使用的协议不同,就无法通信. Windows操作系统的平板电脑和Mac操作系统的一体机电脑,虽然操作系统不同,硬件组成不同,但是只要事先达成一个详细的

学习笔记之TCP/IP协议分层与OSI參考模型

1.协议的分层      ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 终于提出了作为通信协议设计指标的OSI參考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些分层,使得那些比較复杂的网络协议更加简单化. 在这一模型中,每一个分层都接收由它下一层所提供的特定服务,而且负责为自己的上一层提供特定的服务.上下层之间进行交互时所遵循的约定叫做"接口".同一层之间的交互所遵循的约定叫做"协议". 协议分层就如同计算机软件中的模块化开发

Internet概念与TCP/ IP分层模型

Internet是世界上规模最大.用户最多.影响最大的计算机互联网络.本模块介绍Internet的概念及TCP/ IP分层模型. 一.Internet的概念 Internet的概念(也可认为是Internet的结构)可以从以下几个方面理解: 从网络通信的观点来看,Internet是一个由TCP/IP把各个国家.机构.部门的内部网络连接起来的庞大的数据通信网: 从信息资源的角度来看,Internet是一个集各个领域.部门内各种信息资源,以共享为目的的信息资源网: 从技术的角度来看,Internet

学习笔记之TCP/IP协议分层与OSI参考模型

1.协议的分层      ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 最终提出了作为通信协议设计指标的OSI参考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些分层,使得那些比较复杂的网络协议更加简单化. 在这一模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务.上下层之间进行交互时所遵循的约定叫做"接口".同一层之间的交互所遵循的约定叫做"协议". 协议分层就如同计算机软件中的模块化开发.

TCP/IP协议分层

TCP/IP协议分为4层.osi分层是分成了7层. 对应关系: 应用层中,像文件系统的FTP协议,邮件系统的POP3,SMTP. 远程登录的TELNET. 传输的是应用信息. 传输层中,是TCP和UDP.传输的是TCP信息,包括,TCP头+信息.TCP头包含:源和目的主机的端口号,顺序号,确认号,校验字. 网络层中,是IP协议.传输的是网络数据报,包括ip报头,TCP信息. ip报头包括:源和目的主机的IP地址,类型和生命期等. 网络接口层中,传输的是数据帧.包括帧头+IP数据报+帧尾. 帧头中

tcp/ip (网络通讯协议)

介绍 TCP: 传输控制协议, IP: 网际协议, TCP/IP: 供已连接互联网的计算机之间进行通信的通信协议 在tcp/ip内部 , 包含一系列处理数据通信的协议: tcp.udp.icmp.dhcp ip负责将每个包路由至它的目的地.(网络层) tcp用于应用程序之间的通信, 负责处理ip包.(传输层) RFC是tcp/ip协议的标准文档. tcp/ip, 又名: 网络通讯协议. 寻址 ip地址: 每个计算机必须有ip地址才能够接入互联网, 每个ip包必须有一个地址才能够发送到目的计算机.

OSI,TCP/IP,五层协议的体系结构,以及各层协议

以下整理的是计算机网络的OSI,TCP/IP,五层协议的体系结构,以及各层协议,便于以后查看: OSI分层,自上而下分别是:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层 TCP/IP分层:网络接口层(对应OSI的物理层和数据链路层),网际层(对应OSI的网络层,定义了标准的分组格式和协议,即IP协议,当前采用ip4,下一版为ip6),运输层(对应OSI的传输层),应用层(对应OSI的会话层,表示层和应用层) 五层协议分别为:物理层,数据链路层,网络层,传输层,应用层 物理层:作用:

前端工程师如何理解 TCP/IP 传输层协议?

网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别. TCP/IP网络模型 计算机与网络设备要相互通信,双方就必须基于相同的方法.比如,如何探测到通信目标.由哪一边先发起通信.使用哪种语言进行通信.怎样结束通信等规则都需要事先确定.不同的硬件.操作系统之间的通信,所有的这一切都需要一种规则.而我们就把这种规则称为协议(protocol). TCP/IP 是互联网相关的各类协议族的总称,比如:T