前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TCP/IP模型

TCP/IP模型

作者头像
碎碎思
发布2020-06-30 14:34:38
9210
发布2020-06-30 14:34:38
举报
文章被收录于专栏:OpenFPGAOpenFPGA

有了上面的解释,对于TCP/IP模型理解就不是很难了,下图作为OSI的“进阶”模型对比就很有说服力了。

8‑2 TCP/IP模型和OSI参考模型对比

OSI参考模型为什么被弃用呢?

主要是它的分层过于细致,以至于使用网络的体系结构变得臃肿复杂,这和TCP/IP协议对比,也就一目了然了。

还是以发送邮件为例,下面图示的结果一目了然。

下面具体的介绍一些关于TCP/IP概念:

TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。通信类似于语言的沟通,可以把协议理解为语言沟通,大家都说中文,咱们两个人能够互相交流。

为了更加形象的说明协议,可以把“数据链路层”比作一个人,但是这个人不会说话,交流起来比较困难。为了更方便的交流,便引出了“网络层”,可以认为它是会说话的人,那么大家都会说话,但是一个人说英语一个人说中文,大家还是不能够更好的沟通。那么接下来大家该讨论下如何沟通,必须大家都要说中文,这样大家才能理解彼此说的是什么意思,“传输层”就可以认为会说中文的人。这样在传输层大家就能实现正常的通信了。为了大家更方便的沟通,或者说让沟通看起来更加华丽更加实用。这时候“应用层”便应运而生。其实就是更方便,更有效大家沟通,可以把它比作为中文说的很好的人。

按照层次由上到下,层层包装。

1、应用层:最上面的就是应用层了,这里面有http,ftp等等我们熟悉的协议。(TCP/IP的分层中,将OSI参考模型中的会话层、表示层和应用层的功能都集中到了应用程序中实现。TCP/IP应用的架构绝大多数属于客户端/服务器模型。)

负责直接和应用程序接口并提供常见的网络应用服务,此外,为了向应用程序提供有效的网络服务,应用层还需要确立相互通信的应用进程的有效性并提供双方之间的同步,需要提供应用进程所需的信息交换和远程操作,需要建立错误恢复的机制以保证应用层数据的一致性。(有FTP协议、TFTP协议、Telnet协议、DNS协议、HTTP协议)。

向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。

DNS协议:主要功能是通过用户友好的名称为用户提供域名解析服务,即将主机名域名解析为IP地址。

HTTP协议:超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则。

SMTP协议:Simple Mail Transfer Protocol(简单邮件传输协议)。

SNMP协议:Simple Network manage Protocol(简单网络管理协议)。

FTP协议:File Transfer Protocol(文件传输协议)。

应用层的主要应用:

WWW:浏览器和服务端之间通信所用的协议是HTTP协议,所传输数据的主要格式为HTML,WWW中的HTTP属于OSI应用层的协议,HTML属于表示层的协议。

电子邮件:发送电子邮件时用到的协议是SMTP。最初,只能以文件格式发送电子邮件。然后现在的电子邮件的格式由MIME协议扩展之后,就可以发送声音、图像等各式各样的信息。MIME属于表示层的协议。

文件传输(FTP):文件传输是指将其它计算机磁盘上的文件转移到本地计算机上,或将本地磁盘上的文件传送到其它计算机磁盘上。该文件传输过程使用的协议叫做FTP协议。在FTP中进行文件传输时会建立两个TCP连接,分别是发送传输请求时所要用到的控制连接与实际传输数据时所要用到的数据连接。

远程登录(TELNET与SSH):远程登录是指登录到远程的计算机上,使那台计算机上的程序得以运行的一种功能。远程登录常用TELNET与SSH两种协议。(当然还有其它一些协议)

网络管理(SNMP):在TCP/IP中进行网络管理时,采用SNMP(Simple Network Management Protocol)协议。使用SNMP协议管理的主机、网桥、路由器等称作SNMP代理,而进行管理的那一端叫做管理器。SNMP就是这个管理器和代理要用到的协议。在SNMP的代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。这些信息可以通过MIB(Management Information Base)访问。因此,在TCP/IP的网络管理中,SNMP属于应用协议,MIB属于表示层协议。

2、传输层:著名的TCP和UDP协议就在这个层次。

提供应用程序间的通信。其功能包括:

(1)格式化信息流;

(2)提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。

UDP协议(User Datagram Protocol,用户数据报协议)是一种不可靠无连接的传输层协议,不考虑流控制、错误控制,没有重传机制,不会对分组进行顺序检查和排序。(UDP报头含8字节定长和2字节倍数的数据<不是2字节倍数时需要填充位>)(UDP是一种面向无连接的传输层协议。UDP不关心对端是否真正收到了传送过去的数据。如果需要检查对端是否收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。UDP常用在分组数据较少或多播、广播通信以及视频通信等多媒体领域。)

TCP协议(Transport Control Protocol,传输控制协议)是一种面向连接、可靠的、基于字节流的传输层协议,采用了确认机制、超时重传机制,还会对接收到的TCP报文段进行重新排列整理。(TCP报头含20字节定长、选项和填充<选项和填充小于等于40字节>)(TCP是一种面向连接的传输层协议。它可以保证两端通信主机之间的通信可达。TCP能够正确处理传输过程中丢包、传输顺序乱掉等异常情况。)

3、网络层:用来处理网络上流动的数据包(网络传输中最小的数据单元),规定了怎样的路径把数据包传输到目标计算机,并把数据包传送给对方。(与tcp/ip协议密切相关的有IP协议、ARP协议、RARP协议)。IP协议就在这里,它负责对数据加上IP地址和其他的数据(后面会讲到)以确定传输的目标。

负责相邻计算机之间的通信。其功能包括三方面。

(1)处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。

(2)处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。

(3)处理路径、流控、拥塞等问题。

IP协议:Internetworking Protocol(网间网协议),IP是跨越网络传送数据包,使整个互联网都能收到数据的协议。IP也是分组交换的一种协议,但是它不具备重发机制,因此它是不可靠传输协议。

IPv4:头部由20字节定长和一个可选的变长部分(小于等于40字节)组成,32位记录源端IP地址,32位记录目的端IP地址,所有内容长度最大为2^16=65476字节。

IPv6:头部由40字节定长组成。128位记录源端IP地址,128位记录目的端IP地址。

ARP协议:地址解析协议,专用于将32位IP地址映射到网卡的48位MAC地址(从分组数据包的IP地址中解析出物理地址(MAC地址)的一种协议。)。

RARP协议:主要用于将网卡的48位MAC地址转换为32位IP地址。

ICMP协议:Internet Control Message Protocol(互联网控制信息协议),IP数据包在传输的途中一旦发生异常导致无法到达目的地址时,需要给发送端发送一个异常通知。ICMP就是为了这个功能制定的。

4、链路层:用来处理连接网络的硬件部分,包括控制操作系统、硬件的设备驱动和网络适配器,及光纤等物理可见的部分。硬件上的范畴均属于链路层的作用范围之内。

TCP/IP软件的最底层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。

这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。再往下则是硬件层次了,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等(这些我们就不用关心了,我们也不做网卡),所以有些书并不把这个层次放在tcp/ip协议族里面,因为它几乎和tcp/ip协议的编写者没有任何的关系。

发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从得到的数据包解开,最后拿到需要的数据。这种结构非常有栈的味道,所以某些文章也把tcp/ip协议族称为tcp/ip协议栈。

通俗理解:

TCP/UDP是面向传输层的协议,HTTP是面向应用层的协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。

  你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显着的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。另外,TCP是面向连接的,可以类比于打电话,UDP是面向非连接的,可以类比于发短信。

TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。

HTTP(超文本传输协议):是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。

Socket:Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端。

最后,请大家思考TCP、UDP、TCP\IP之间有什么关系?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenFPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档