TCP/IP网络模型

TCP/IP网络模型



前言

TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层(网络层)、传输层、和应用层。网络访问层又可以分为数据链路层和物理层。


一、应用层

应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务。应用层是最高层的,同时也是用户能够直接操作到的,例如我们平常使用的应用软件、程序等等。同时,应⽤层只需要专注于为⽤户提供应⽤功能,并不关⼼数据是如何传输的,当两个不同设备的应⽤需要通信的时候,应⽤就把应⽤数据传给下⼀层,也就是传输层。
因此,应⽤层是⼯作在操作系统中的⽤户态,传输层及以下则⼯作在内核态。

二、传输层

应⽤层的数据包会传给传输层,传输层是为应⽤层提供⽹络⽀持的。

在传输层会有两个传输协议,分别是 TCP 和 UDP。

TCP 的全称叫传输层控制协议(Transmission Control Protocol),⼤部分应⽤使⽤的正是 TCP 传输层协议,⽐如 HTTP 应⽤层协议。TCP 相⽐ UDP 多了很多特性,⽐如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对⽅,适用场景:文件传输等高精度传输任务。

UDP 就相对很简单,简单到只负责发送数据包,不保证数据包是否能抵达对⽅,但它实时性相对更好,传输效率也⾼,适用场景:实时对话等时效性要求高的任务。

当然,UDP 也可以实现可靠传输,把 TCP 的特性在应⽤层上实现就可以,不过要实现⼀个商⽤的可靠 UDP传输协议,也不是⼀件简单的事情。
应⽤需要传输的数据可能会⾮常⼤,如果直接传输就不好控制,因此当传输层的数据包⼤⼩超过 MSS(TCP 最⼤报⽂段⻓度) ,就要将数据包分块,这样即使中途有⼀个分块丢失或损坏了,只需要᯿新这⼀个分块,⽽不⽤重新发送整个数据包。在 TCP 协议中,我们把每个分块称为⼀个 TCP 段(TCP Segment)。

当设备作为接收⽅时,传输层则要负责把数据包传给应⽤,但是⼀台设备上可能会有很多应⽤在接收或者传输数据,因此需要⽤⼀个编号将应⽤区分开来,这个编号就是端⼝。⽐如 80 端⼝通常是 Web 服务器⽤的,22 端⼝通常是远程登录服务器⽤的。⽽对于浏览器(客户端)中的每个标签栏都是⼀个独⽴的进程,操作系统会为这些进程分配临时的端⼝号。由于传输层的报⽂中会携带端⼝号,因此接收⽅可以识别出该报⽂是发送给哪个应⽤。

三、网络层

对于应用层来讲,我们并不需要他做过多的事情,他只需要服务好应用,扮演好数据传输的媒介即可。实现应用到应用之间的通信任务,实际上是由网络层负责的。

在网络层中,最常使用的协议就是IP协议了,IP 协议会将传输层的报⽂作为数据部分,再加上 IP 包头组装成 IP 报⽂,如果 IP 报⽂⼤⼩超过 MTU(以太⽹中⼀般为 1500 字节)就会再次进⾏分⽚,得到⼀个即将发送到⽹络的 IP 报⽂。

⽹络层负责将数据从⼀个设备传输到另⼀个设备,世界上那么多设备,⼜该如何找到对⽅呢?因此,⽹络层需要有区分设备的编号。
我们⼀般⽤ IP 地址给设备进⾏编号,对于 IPv4 协议, IP 地址共 32 位,分成了四段,每段是 8 位。只有⼀个单纯的 IP 地址虽然做到了区分设备,但是寻址起来就特别麻烦,全世界那么多台设备,难道⼀个⼀个去匹配?这显然不科学。
因此,需要将 IP 地址分成两种意义:
⼀个是⽹络号,负责标识该 IP 地址是属于哪个⼦⽹的;
⼀个是主机号,负责标识同⼀⼦⽹下的不同主机;
怎么分的呢?这需要配合⼦⽹掩码才能算出 IP 地址 的⽹络号和主机号。那么在寻址的过程中,先匹配到相同的⽹络号,才会去找对应的主机。

除了寻址能⼒, IP 协议还有另⼀个重要的能⼒就是路由。实际场景中,两台设备并不是⽤⼀条⽹线连接起来的,⽽是通过很多⽹关、路由器、交换机等众多⽹络设备连接起来的,那么就会形成很多条⽹络的路径,因此当数据包到达⼀个⽹络节点,就需要通过算法决定下⼀步⾛哪条路径。
所以,IP 协议的寻址作⽤是告诉我们去往下⼀个⽬的地该朝哪个⽅向⾛,路由则是根据「下⼀个⽬的地」选择路径。寻址更像在导航,路由更像在操作⽅向盘。

四、数据链路层

实际场景中,⽹络并不是⼀个整体,数据不仅可以在同⼀个⽹络中设备间进⾏传输,也可以跨⽹络进⾏传输。⼀旦数据需要跨⽹络传输,就需要有⼀个设备同时在两个⽹络当中,这个设备⼀般是路由器,路由器可以通过路由表计算出下⼀个要去的 IP 地址。那么,路由器怎么知道IP地址所对应的设备是哪个呢?

于是,就需要有⼀个专⻔的层来标识⽹络中的设备,让数据在⼀个链路中传输,这就是数据链路层,它主要为⽹络层提供链路级别传输的服务。
每⼀台设备的⽹卡都会有⼀个 MAC 地址,它就是⽤来唯⼀标识设备的。路由器计算出了下⼀个⽬的地 IP 地址,再通过 ARP 协议找到该⽬的地的 MAC 地址,这样就知道这个 IP 地址是哪个设备的了。

数据链路层的主要功能:1、将数据组合成数据块,封装成帧;2、差错控制;3、流量控制;4、链路控制;5、MAC寻址;6、区分数据和控制信息;7、透明传输。

五、物理层

当数据准备要从设备发送到⽹络时,需要把数据包转换成电信号,让其可以在物理介质中传输,这⼀层就是物理层,它主要是为数据链路层提供⼆进制传输的服务。

网络层、数据链路层和物理层传输的数据单位分别是报文、帧、比特。

数据链路层是在物理层所提供的服务的基础上向网络层提供服务。物理层是以比特流进行传输的,并不能保证在传输中数据的可靠性,接收到的数据可能与发送的数据有差异。因此数据链路层为了对数据进行有效的差错控制,就采用一种“帧”的数据块进行传输。
采用帧传输方式的好处是在发现有数据传送错误时,只需要将有差错的帧再次传送,而不需要将全部数据的比特流进行重传,这将会大大提高传送效率。(校验方法:奇偶校验、CRC(循环冗余检验)等等,利用这些校验方法可以判定一帧在传输过程中是否发生了错误。一旦发现错误,一般可以采用反馈重发的方法来纠正。这就要求接收方收完一帧后,向发送方反馈一个接收是否正确的信息,使发送方所在此作出是不是需要重新发送的决定,也即发送方仅当收到接收方已正确接收的反馈信号后才能认为该帧已经正确发送完毕,否则需重发直至正确为止。)

物理层将比特流(注意:数据报也是比特流,只不过是按照一定规则(协议)构建的比特流)转换成电信号进行传输,物理层的主要功能是完成相邻接点之间原始比特流的传输。报文头部和上层数据信息都是由二进制数组成的,物理层将这些二进制数字组成的比特流转换成电信号或无线信号在网络中传输。
等达到另一端后,数据链路层根据物理层的电信号,来转换为用0,1二进制代码表示的数据帧,在网络层转化为数据包,在传输层转化为数据段,在应用层就成了用户的数据.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值