TCP/IP框架

一 TCP/IP 概述

二 TPC/IP协议分层

2.1 前言
2.2 OSI参考模型简述
2.3 OSI参考模型7层通信简述
2.4 TCP/IP模型简述
2.5 TCP/IP模型通信式例

一 TCP/IP 概述

从字面意义上讲,初见TCP/IP到时候,有人可能会以为这是 TCP 和 IP 两种协议,实际生活当中,有事也确实指这两种协议,但是在很多情况下,它只是利用IP进行通信时所必需用的的协议群的统称,具体来说, IP或ICMP,TCP或UDP,TELNET或FTP 以及HTTP等都属于TCP/IP的协议。TCP/IP泛指这些协议,因此有时也称TCP/IP网际协议族。而我们深处互联网世界,互联网在进行通讯的时候,需要相应的网络协议,TCP/IP就是为为互联网开发制定的协议族,所以互联网的协议就是TCP/IP,TCP/IP就是互联网的协议。
在这里插入图片描述

二 TPC/IP协议分层

2.1 前言

如下图是 OSI模型和TCP/IP模型对比,在介绍TCP/IP模型之前首先要对OSI模型做一个简单介绍,因为这两个模型的结构很像,只不过OSI模型看起来更细致更好理解,而TCP/IP模型则可以想成是将OSI模型中的各个部分分了一下组,重新组成了几个大的部分而已。
在这里插入图片描述

2.2 OSI模型简述
2.2.1 OSI模型之协议分层

想必很多人在初见网络协议的时候,第一印象都是:“”怎么有这么多协议啊! 看着好乱啊! 这些协议都是干嘛的啊?等等一系列问题“”,所以今天总结一下网络协议族中的各个协议,为什么要有这么多协议,以及这些协议都是干嘛的,他们的关系是什么?

首先我们通过“打电话”这个生活中的常见动作来抛砖引玉说明协议分层的意义,假设A和B两个在打电话,在此我们只考虑 语言层 和 通信设备层 两个层面。如下图,图中A和C两个人正在通电话(通信设备)用汉语(语言协议)聊天,从表面上看,A跟C是在用汉语直接对话,但实际上是A与C都在通过电话机听筒听取声音,都在对着麦克风说话,想象一下,如果一个古代的人穿越会现代,看着一个人对着电话机说话,他一定会以为这个人在和电话机聊天。其实在这张图中,他们所用的语言协议作为麦克风的音频输入,在通信设备层被转还为电波信号传送出去了。传送到对方的电话机之后,又被通信设备层转换为声音输出,传递给对方,因此 A和C是利用了电话机通过音频转换声音的借口实现了对话。如果A用汉语 C用英语打电话,尽管电话机可以通信,但是两个人都不懂对方的语言,通话也是“失败”的。这个例子就简单的说明了协议分层的意义。
在这里插入图片描述

2.2.2 OSI模型简述

上面 2.2.1 OSI模型之协议分层 只是将协议划分为两层进行了简单的说明。然而实际的分组通信协议会相当复杂,OSI模型将这样一个复杂的协议整理并分为了易于理解的7个分层,如下图:
在这里插入图片描述

在这里插入图片描述

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

表示层:将应用层的信息转化为适合网络传输的格式传递给下一层,或者将来自下一层中的数据转化为上层能够理解处理的格式,因此他主要负责数据格式的转换。

会话层:负责建立与断开通信连接以及数据分割等数据传输相关的管理。

传输层:起着可靠传输的作用。

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

数据链路层:负责物理层面的节点之间的通信传输,例如与一个以太网连接的两个节点之间的通信。将0,1序列划分为具有意义的数据帧传输给对端(发送/接收)

物理层:负责 0,1比特流(0、1序列)与电压高低,光的闪灭之间的转换。

2.3 OSI参考模型7层通信简述

在7层的OSI模型中,如何模块化通信传输?
OSI模型的7层通信传输可以参考上面提到的打电话的通信模式,发送方从第7层,第6层到第一层由上至下按照顺序传输数据,而接收端则从第1层,第2层到第7层由下至上向每一个上级分层传输数据。每个分层上,在处理由上一层传过来的数据时可以附上当前分层的协议所必需的“首部”信息。然后接收端对收到的数据进行进行当前层“首部”与“信息”的分离,再转发给上一层,最终将接收的数据恢复到原状态。如下图:

在这里插入图片描述

假如用户A向用户B发送一份电子邮件,内容是“早上好”,分析各层协议的工作。
用户A:
应用层:指电脑的各种软件,这里指的是电子邮件,当用户A编辑好邮件信息点击“发送”的一刻起,就进入了应用层协议的处理。该协议会在所发送的信息“早上好”的首部加上首部信息,该首部信息表明了邮件内容为“早上好”以及收件人是用户B。发送给下一层表示层。

表示层:处理上层 应用层 转发过来的数据,可以理解为将用户所用的各种软件各不相同的数据格式都转化为网络通用的标准数据格式。为什么这么做呢?如果用户A和B 所用电子邮箱软件的数据格式不一样,如UTF-8 UTF-16 等等,那么直接传输就无法接收。不可能全世界所有的用户都时候同一款软件,所以需要标志层进行格式转换,将发送发的信息转换为“网络通用的标准数据格式”,将接收的数据再转换为对应软件的数据格式。

会话层:决定以怎样的方式进行数据发送与接收,例如用户A给用户B发送5封邮件,可以有很多种发送方法,可以发送一封见礼依次连接,也可以见礼依次连接一起连续发送五封,接收端也一样。会话层也像应用层或表示层一样,在起收到的数据首部加上首部信息,首部信息中记录这数据传输的顺序。

传输层:上一层的会话层只对 如何建立连接,何时发送数据进行管理,但并不具备实际传输数据的能力。但真正进行通信连接与断开的操作,即“建立连接” “断开连接” “重发”是传输层,此外传输层为确保所传输的数据到达目标地址,会在通信两端的计算机之间进行确认,如果数据没有到达,他会负责重新发送。

网络层:在网络与网络相互连接的环境下,将数据从发送端主机发送给到接收端主机,依据目标地址将数据发送至目标主机。

数据链路层与物理层:理解为 网络驱动(如网卡驱动) 与 硬件(网卡)

主机B端的处理方式和顺序正好相反,是由物理层向上传输,每层取下自己的首部信息,传递给上一层。

2.4 TCP/IP模型简述

如下图,对比OSI模型分析TCP/IP
在这里插入图片描述

硬件:理解为网卡等网络

网卡层:理解为网卡驱动

互联网层:参考OSI模型中的网络层,互联网层使用IP协议,IP协议依据IP地址转发分包数据。

IP:IP是跨越网络传送数据包,使整个网络都能接收数据包的协议。IP 协议能够使得数据发送到地球的另一端,这期间他使用IP地址作为主机的标识。
	
ICMP:IP 数据包在发送途中一旦发生异况导致无法到达对端目标地址时,须要给发送端发送一个发生异常的通知。ICMP就是为了这一功能制定的。
	
ARP:从分组数据包发IP地址中解析出物理地址(MAC地址)的一种协议。

传输层:功能参考OSI模型中的传输层,确定网络连接,断开,重发决定。

TCP:TCP是一种面向有连接的传输协议。他可以保证两端通信主机之间的通信可达。

UDP:UDP有别于TCP,他是一种面向无连接的传输协议,UDP不会关心对端是否真正收到了数据。

应用层:TCP/IP 中,将应用层,表示层,会话层都聚集到了应用程序中实现。

2.5 TCP/IP模型通信式例

TCP/IP 通信如图
在这里插入图片描述

假设甲方给乙方发送电子邮件,内容为:“早上好”

发送操作:

应用程序处理:启动应用程序,新建邮件,编辑好内容,填写好收信人信箱,点击发送,就开始了TCP/IP 的通信了。首先应用程序会尽形编码处理,例如有些电子邮件UTF-8进行编码,这个编码过程类似于OSI的表示层。编码转换后,不会马上发送,因为有些邮件的软件由一次性发送多个邮件的功能,也有一键一次性收取多个邮件的功能,像这种何时建立通信连接,何时发送数据的管理功能,类似于OSI模型中的会话层。

TCP模块的处理:TCP根据应用层的指示(可以理解为根据OSI模型中的会话层指示),负责建立连接,断开连接,TCP提供给将应用层发来的数据顺利发送至对端的可靠传输。为了实现 TCP这一功能,需要在应用层数据的前端附加一个TCP首部,TCP 首部中包括源端口号和目标端口号(用于识别发送主机和接收主机上的应用(邮箱软件)),序号(用于说明发送的包中哪部分是数据),校验和(用于判断数据是否被损坏)。随后将附加了TCP首部的包发送给IP.

IP模块处理:IP 模块将TCP模块传过来的TCP数据以及TCP首部当做自己的数据,并且在 TCP首部的前段加上自己的IP首部,因此IP数据包中的IP首部后面仅仅跟随的就是TCP首部,然后才是应用程层首部以及数据本身。IP首部中包括发送端IP地址以及接收端IP地址,紧随这IP首部的还有用来判断后面数据是TCP还是UDP的信息。IP包生成后参考路由控制表决定接收次IP包的路由或主机,随后IP包将发送给连接这些路由或主机网络接口的驱动程序(链路层),以实现真正的发数据。

网络接口的处理:从IP模块传过来的IP 包,对于以太网驱动来说就是数据,给这些数据添加以太网首部信息并进行发送处理。以太网首部中包含发送端MAC地址,接收端MAC地址,以及标志以太网类型的以太网数据协议。根据上述信息产生以太网数据包通过物理层发送给接收端。

接收操作:

网络接口的处理:当接收端主机接收到以太网数据包时,首先从以太网数据包首部找到MAC地址判断是否是发给自己的包,如果不是发给自己的包则丢弃。如果是发给自己的包,就查找以太网首部信息中的类型域,从而判断以太网协议所传过来的数据类型,本例中数据类型是IP包。因此将数据包发送给IP层,如果数据类型不是IP,而是ARP等协议,那么就把数据发送给ARP协议处理。如果无法识别则丢弃。

IP 模块的处理:IP模块收到IP包后,也做类似的处理,如果判断IP包首部中的IP地址与自己的IP地址一致,则接收数据,并从首部信息中继续查找上一层的协议,如果是TCP就将IP包首部之后的部分传给TCP模块处理,如果是UDP就将IP包首部之后的部分传给UDP处理。对于由路由器的情况,接收端地址往往不是自己的地址,此时需要借助路由控制表,确定目标主机或路由器之后在转发数据。

TCP模块的处理:TCP模块首先会校验一下校验和,确认数据是否损坏,然后检查是否在按照序号接收数据,最后检查端口号,用于确定应用程序。数据接收完毕后,接收端会发送一个“接收回执”给发送端,如果这个回执没有到达发送端,那么发送端就会认为接收端没有接收到数据,从而反复发送数据。数据被完整的接收之后,会传给由端口号识别的应用程序。

应用程序的处理:应用程序接收到数据 “早上好”。

下图为数据的处理顺序:

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux老A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值