TCP/IP协议基础知识

£可爱£侵袭症+ 提交于 2019-11-29 21:07:22

这里写图片描述

1. TCP/IP协议分层模型

    1. TCP/IP协议分层模型主要分为四层:应用层、传输层、网络层以及网络接口层。

(1)网络接口层:相当于OSI参考模型中的数据链路层与物理层,指底层实现数据传输的硬件设备。

(2)网络层:相当于OSI模型中的网络层,基于IP地址进行数据发送。(IP协议是一种面向无连接类型的分组交换协议,不具备数据重发的能力,即使数据未能成功到达目标地址也不会重发,其无法保证数据传输可靠性)

(3)传输层:相当于OSI模型中的传输层,一台计算机通常会同时运行多个应用程序,因此必须分清两台计算机之间是哪两个应用程序之间在进行通信。TCP协议中通过端口号来进行区分识别。(TCP协议是一种面向有连接的传输层协议,保证通信主机之间的数据可达)。

(4)应用层:相当于OSI模型中的会话层、表示层和应用层,这三层协议在TCP/IP模型中全部集中到了应用程序中进行实现(网络层和传输层由操作系统实现)。

2. TCP/IP协议通信示例

    1. 数据包首部:每经过TCP/IP模型中的一层协议处理,都会在数据首部加上一个首部信息,该信息中包含了协议的对数据一些处理方式。过程如下

(1)发送端发送数据后,首先经过应用层协议处理(比如http协议),就在数据的首部添加上应用层协议的首部信息;

(2)然后经过传输层,传输层中的TCP协议对数据进行处理,并添加上TCP协议的首部信息。

(3)然后经过网络层,网络层中的IP协议继续处理上层传来的数据包,并添加上IP协议的首部信息。

(4)然后经过网络接口层,网络接口层中处理上层传来的数据,并添加上首部信息。

如下图所示

关于数据包、数据帧、数据报

数据帧(Frame):数据链路层,传递的单位是frame 帧,就是数据链路层的协议数据单元,它包括三部分:帧头,里面有mac地址,通过这个地址可以在底层的交换机这个层面里顺着网线找到你的计算机。数据部分,ip数据包,意思是使用ip地址定位的一个数据包。帧尾。其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如ip数据包。    
      
数据包(Packet):TCP/IP协议通信传输中的数据单位,处于网络层,在局域网中,“包”是包含在“帧”里的。packet是整个tcpip通信协议里网络层的传输单位,也是最小的单位。一个ip包里有什么呢?跟帧一样,有着目的地的ip地址及其来源的ip地址和其他的校验信息。它也被称为头。那么还有什么呢?来自传输层托付给自己待传送的信息。这个信息会被分成多个ip数据包发送出去。
所以网络层传递的是ip包,ip包里是待传输消息的一部分。
      
数据报(Datagram):现在来到传输层了,传输层直接接受来自你的消息,小到你给朋友发个晚安,大到你给别人传递个文件,只要提供对方的ip地址(还有端口号),其它的都交给传输层帮助你实现。就很像你与快递公司的关系。一种发送前会先探路,保证送货到家的,这是tcp协议,另一种只管寄,不管是否查收的就是udp。这两种协议都会在发送前把你的消息拆分成多个ip数据包来传输。udp英文就叫 user datagram protocol。所以数据报是啥,就是带地址的消息。

    2. TCP/IP数据传输的一个示例:以收发邮件为例

发送方

(1)首先,最初始的数据包括邮件内容、发送者、接收者三个数据,点击发送后,建立TCP连接,进入传输层处理

(2)传输层接收到上层的数据后,开始建立连接,然后处理上层传来的数据包,在数据包的首部加上TCP协议首部信息,然后交给下一层处理

(3)网络层接收到上层数据包(该数据包包括了TCP首部和初始数据),处理上层的数据包,并在数据包首部添加IP协议首部信息,生成IP数据包

(4)网络接口层接收到上层的IP数据包,在数据包首部添加上网络接口层的协议首部信息。

接收方

(1)首先,由网络接口层的协议解析处理所接受的数据包中的网络接口层首部信息,比如判断首部信息中的MAC地址是否一致、判断数据包的下一个首部信息对应的是哪个协议、去除数据包中的网络接口层协议的首部信息等处理,如果一切正常,就将数据包传给上一层对应的协议处理,否则丢弃数据包。

(2)网络层接收数据包,分析数据包首部信息,也就是IP协议解析IP数据包首部信息,比如判断首部信息中的IP地址是否一致、判断数据包的下一个首部信息对应的是哪个协议、去除数据包中的网络层IP协议的首部信息等处理,如果一切正常,就将数据包传给上一层对应的协议处理,否则丢弃数据包。

(3)传输层接收数据包,分析数据包首部信息,比如通过TCP协议解析TCP数据包首部信息,在TCP处理模块中会进行校验数据完整性、通过端口号确定应用程序等一系列处理操作。

(4)应用层的应用程序接收完整的数据包并进行处理(数据编码等)。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!