前端基础-TCP/IP 不完全详解

TCP/IP 不完全详解

TCP/IP是通信协议的统称。首先,我们先认识一下OSI参考模型

OSI 参考模型

OSI 参考模型中各个分层的作用如下:

概括的说:

  • 应用层:为应用程序提供服务并规定应用程序中通信的相关细节。包括文件传输、电子邮件、远程登陆等协议
  • 表示层:将应用处理的信息转换为适合网络传输的格式,或将下一层的数据转换为上层能够处理的格式。因此它主要负责数据格式的转换。 具体来说,就是将设备固有的数据格式转换为网络标准传输格式。不同设备对比同一比特流解释的结果可能会不同。因此,使它们保持一致是这一层的主要作用。
  • 会话层:负责建立和断开通信链接,以及数据的分割等数据传输相关的管理。
  • 传输层:起着可靠传输的作用。只在通信双方节点上进行处理,而无需在路由器上处理。
  • 网络层:将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某一个地址。因此这一层主要负责寻址和路由选择。
  • 数据链路层:负责物理层面上互连的、节点之间的通信传输。例如与1个以太网相连的2 个节点之间的通信。 将0、1序列划分为具有意义的数据帧传送给对端(数据帧的生成与接收)。
  • 物理层:负责0、1比特流(0、1序列)与电压的高低、光的闪灭之间的互换。

TCP/IP 基础知识

TCP/IP与OSI参考模型

硬件(物理层)

TCP/IP的最底层是负责数据传输的硬件。这种硬件就相当于以太网或电话线路等物理层的设备。关于它的内容一直无法统一定义。因为只要人们在物理层面上所使用的传输媒介不同(如使用网线或无线),网络的带宽、可靠性、安全性、 延迟等都会有所不同,而在这些方面又没有一个既定的指标。总之,TCP/IP是在网络互连的设备之间能够通信的前提下才被提出的协议。

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

利用以太网中的数据链路层进行通信,因此属于接口层。也就是说,把它当做让NIC起作用的“驱动程序”也无妨。驱动程序是在操作系统与硬件之间起桥梁作用的软件。计算机的外围附加设备或扩展卡,不是直接插到电脑上或电脑的扩展槽上就能马上使用的,还需要有相应驱动程序的支持。

互联网层(网络层)

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

TCP/IP分层中的互联网层与传输层的功能通常由操作系统提供。尤其是路由 器,它必须得实现通过互联网层转发分组数据包的功能。

此外,连接互联网的所有主机跟路由器必须都实现IP的功能。其他连接互联网的网络设备(如网桥、中继器或集线器)就没必要一定实现IP或TCP的功能。

IP

  • ip是跨越网络传送数据包,使整个互联网都能收到数据的协议。ip协议使数据能够发送到地球的另一端,这期间它使用IP地址作为主机的标识。
  • IP还隐含着数据链路层的功能。通过IP,相互通信的主机之间不论经过怎样的底层数据链路都能够实现通信。
  • 虽然IP也是分组交换的一种协议,但是它不具有重发机制。即使分组数据包未能到达对端主机也不会重发。因此,属于非可靠性传输协议。

ICMP

  • IP数据包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发送端发送一个发生异常的通知。ICMP就是为这一功能而制定的。它有时也被用来诊断网络的健康状况。

ARP

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

传输层

TCP/IP的传输层有两个具有代表性的协议。该层的功能本身与OSI参考模型 中的传输层类似。

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

TCP

  • TCP是一种面向有连接的传输层协议。它可以保证两端通信主机之间的通信可达。TCP能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况。此外, TCP还能够有效利用带宽,缓解网络拥堵。
  • 然而,为了建立与断开连接,有时它需要至少7次的发包收包,导致网络流量的浪费。此外,为了提高网络的利用率,TCP协议中定义了各种各样复杂的规范,因此不利于视频会议(音频、视频的数据量既定)等场合使用。

UDP

  • UDP有别于TCP,它是一种面向无连接的传输层协议。UDP不会关注对端是否真的收到了传送过去的数据,如果需要检査对端是否收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。
  • UDP常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。

应用层(会话层以上的分层)

TCP/IP的分层中,将OSI参考模型中的会话层、表示层和应用层的功能都集中到了应用程序中实现。这些功能有时由一个单一的程序实现,有时也可能会由多个程序实现。因此,细看TCP/IP的应用程序功能会发现,它不仅实现OSI模型中应用层的内容,还要实现会话层与表示层的功能。

TCP/IP应用的架构绝大多数属于客户端/服务端模型。提供服务的程序叫服务端,接受服务的程序叫客户端。在这种通信模式中,提供服务的程序会预先被部署到主机上,等待接收任何时刻客户可能发送的请求。

客户端可以随时发送请求给服务端。有时服务端可能会有处理异常、超出负载等情况,这时客户端可以在等待片刻后重发一次请求。

WWW

  • WWW可以说是互联网能够如此普及的一个重要原动力。用户在一种叫Web 浏览器的软件上借助鼠标和键盘就可以轻轻松松地在网上自由地冲浪。也就是说轻按一下鼠标架设在远端服务器上的各种信息就会呈现到浏览器上。浏览器中既可以显示文字、图片、动画等信息,还能播放声音以及运行程序。
  • 浏览器与服务端之间通信所用的协议是HTTP( HyperText Transfer Protocol)。所传输数据的主要格式是HTML( HyperText Markup Language )。WWW中的HTTP属于OSI应用层的协议,而HTML属于表示层的协议。

E-Mail

  • 电子邮件其实就是指在网络上发送信件。有了电子邮件,不管距离多远的人,只要连着互联网就可以相互发送邮件。发送电子邮件时用到的协议叫做SMTP。

文件传输(FTP)

  • 文件传输是指将保存在其他计算机硬盘上的文件转移到本地的硬盘上,或将本地硬盘的文件传送到其他机器硬盘上的意思。
  • 该过程使用的协议叫做FTP(File Transfer Prototol)。FTP很早就已经投入使用、传输过程中可以选择用二进制方式还是文本方式。
  • 在FTP中进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所要用到的数据连接。

远程登录(TELNET与SSH)

  • 远程登录是指登录到远程的计算机上,使那台计算机上的程序得以运行的一种功能。TCP/IP网络中远程登录常用TELNET和SSH两种协议。

网络管理(SNMP)

  • 在TCP/IP 中进行网络管理时,采用SNMP( Simple Network Management Protocol)协议。使用SNMP管理的主机、网桥、路由器等称作SNMP代理(Agent),而进行管理的那一段叫做管理器(Manager)。SNMP正是这个Manager与Agent所要用到的协议。
  • 在SNMP的代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。这些信息可以通过MIB( Management Information Base)访问。因此,在TCP/IP的网络管理中,SNMP属于应用协议,MIB属于表示层协议。
  • 一个网络范围越大,结构越复杂,就越需要对其进行有效的管理。而SNMP可以让管理员及时检査网络拥堵情况,及早发现故障,也可以为以后扩大网络收集必要的信息。

TCP/IP 分层模型与通信示例

数据包首部

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


网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上层传过来的数据。首部的结构由协议的具体规范详细定义。例如,识别上一层协议的域应该从包的哪一位开始取多少个比特、如何计算校验和并插入包的哪一位等。相互通信的两端计算机如果在识别协议的序号以及校验和的计算方法上不一样,就根本无法实现通信。

因此,在数据包的首部,明确标明了协议应该如何读取数据。反过来说,看到首部,也就能够了解该协议必要的信息以及所要处理内容。因此,看到包首部就如同看到协议的规范。首部就像是协议的脸。

示例:发送数据包

假设甲给乙发送电子邮件,内容为:“早上好”。而从TCP/IP通信上看,是从一台计算机A向另一台计算机B发送电子邮件。我们就通过这个例子来讲解一 下TCP/IP通信的过程。

  • 应用程序处理

    启动应用程序新建邮件,将收件人邮箱填好,再由键盘输入邮件内容“早上好”,鼠标点击“发送”按钮就可以开始TCP/IP的通信了。

    首先,应用程序中会进行编码处理。(UTF-8等)这些编码相当于OSI的表示层功能。

    编码转化后,实际邮件不一定会马上被发送出去,因为有些邮件的软件有一次同时发送多个邮件的功能,也可能会有用户点击“收信”按钮以后才一并接收新邮件的功能。像这种何时建立通信连接何时发送数据的管理功能,从某种宽泛的意义上看属于OSI参考模型中会话层的功能。

    应用在发送邮件的那一刻建立TCP连接,从而利用这个TCP连接发送数据。 它的过程首先是将应用的数据发送给下一层的TCP,再做实际的转发处理。

  • TCP模块的处理

    TCP根据应用的指示负责建立连接、发送数据以及断开连接。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包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据。

    如果尚不知道接收端的MAC地址,可以利用ARP( Address Resolution Protocol)查找。只要知道了对端的MAC地址,就可以将MAC地址和IP地址交给以太网的驱动程序,实现数据传输。

  • 网络接口(以太网驱动)的处理

    从IP传过来的IP包,对于以太网驱动来说不过就是数据。给这数据附加上以太网首部并进行发送处理。以太网首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。根据上述信息产生的以太网数据包将通过物理层传输给接收端。发送处理中的FCS由硬件计算,添加到包的最后。设置FCS的目的是为了判断数据包是否由于噪声而被破坏。

总结如下图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值