©作者:凡人编程传
©系列:计算机网络基础
©说明:以凡人之笔墨,书写未来之大梦
文章目录
- <font color="#DEB887">₪<font color="#5F9EA0">前言
- <font color="#DEB887">₪<font color="#5F9EA0">网络基础TCP/IP
- <font color="#DEB887">₪<font color="#5F9EA0">应用层
- <font color="#DEB887">₪<font color="#5F9EA0">传输层
- <font color="#DEB887">₪<font color="#5F9EA0">网络层
- <font color="#DEB887">₪<font color="#5F9EA0">网络接口层
- <font color="#DEB887">₪<font color="#5F9EA0">结言
₪前言
这是这个科目的开篇章,由于博主本人对计算机网络这个科目也是仅仅入门学习中而且也感到这个科目的难学。可能有些讲的不恰当的地方还请大佬们指教,我会尽力把做到没有错误。好了,这一节我们主要介绍计算机网络现在的主要使用模型TCP/IP模型,废话不多说,咱们直接进入正题。
₪网络基础TCP/IP
计算机网络中的设备要进行通信,双方就要基于相同的方法,如:如何发起通信,如何建立通信,通信的时候用什么语言,如何结束通信。而这一系列操作就需要一个规则约定。而我们就把这个规则统称为协议(protocol)。而TCP/IP协议族最重要的一点就是分层。TCP/IP按层次分别把层次分为四层:
- 应用层
- 传输层
- 网络层
- 网络接口层
TCP/IP层次化是有好处的。如果互联网由一个协议统筹的话,那么当某个设计需要改变的时候,那么就需要连着把不需要改动的地方都一起改了。而层次化后就只需要改动那单独一层的设计而不影响其他层次的部分。
₪应用层
最上层的,也就是离我们用户最近的层次就是应用层了。我们用的手机和电脑中的应用软件就是在应用层中实现。当两个不同设备之间要进行通信的时候,应用层就需要把数据传给下一层——传输层。所以应用层只需要专心给用户提供一系列网络服务,如SMTP、HTTP、DNS、Telent等。而不需要关注传给传输层的数据如何。
举个例子:也就是相当于我们生活中寄快递,我们只需要把快递交给快递员即可,不需要关注快递员是如何送达目的地的。
₪传输层
应用层会把数据交给传输层(Transport Layer)
如图:
传输层有两个主要的协议:
- TCP协议:中文名是传输控制协议(Transmission Control Protocol),大部分应用都是用的这个协议,因为他具有流量控制,超时重传,拥塞控制等特性。具有可靠性。
- UDP协议:中文名是用户数据报协议(User Datagram Protocol),相比TCP协议他没有TCP那些可靠的特性,他只发送数据包,不保证数据包是否达到对方。但是他就是因为这种简单粗暴的传输方式提高了传输效率,所以他经常应用于网络视频聊天,音箱广播这些实时性的应用中。
注意:
当应用层传给传输层的数据很大时,传输层的数据包超过了最大长度MSS(TCP最大报文段长度),就会把数据包分块,这样即便一个数据块丢失或损坏了也不影响整个传输,只需要丢失和损坏的数据块重传即可,这样就避免了重新传输整个数据包。在TCP协议中,我们把每一个分块称为一个TCP段(TCP Segment)
如图:
当设备作为接受方的时候,传输层则会把数据传给应用。但是在一台设备上可能有很多应用在发送和接收数据。所以这时候就需要一个叫端口号的东西来区分要送达的应用。如web服务器的端口号是80,telent的端口号是23…
₪网络层
实际环境中的网络是线路复杂,交错的。如果一个设备上读数据要传输到另一个设备,那么就要在这些各种各样的线路中做出选择。但是我们传输层的设计目的就是让他高效、专注为应用层提供应用之间的传输服务,让其作为应用间数据传输的媒介。而实际应用数据之间的传输就交给网络层(Internet Layer)
网络层中最常用的协议是IP协议,IP协议会把传输层的报文转换成数据部分,然后再加上IP报头组成IP报文,此外,如果IP报文超过MTU最大长度(以太网中一般是1500个字节)。就会再次进行分片。
那么既然要网络层实现应用数据之间的传递,这么多个这么多应用在不同的设备中,世界上又有这么多的设备难道要一个一个去找吗?这时候就需要一个编号来标着要找的那个设备——IP地址。
我们用IP地址来区分设备,对于IPv4协议,IP地址共32位,分成了四段,每段8位。虽然用一个简单的IP地址做到了区分设备,但是世界上怎么多设备还要一个一个去匹配?未免效率太低了。
因此需要把IP地址分成两部分:
- 网络号:负责标识此IP地址是属于哪个子网的。
- 主机号:负责标识同一子网下改IP地址所标识的主机。
那么知道了IP地址,怎么知道网络地址和主机地址呢?如分的呢?这时候继需用IP地址和子网掩码配合才能算出主机号和网络号。
举个例子:IP地址位10.60.100.0/24,后面的24就是子网掩码255.255.255.0(二进制也就是:11111111 11111111 11111111 00000000)其中有24个1,24正是代表子网掩码中1的数。
只需要把IP地址和子网掩码进行按位与运算即可得到网络号:
而主机号就是子网掩码取反后和IP地址按位与即可
除了寻址,IP协议的另一个重要个功能就是路由,实际场景中两套设备之间不是有一根网线连接起来的,而是由多个交换机,路由器等数据交换设备连接起来的,最么最后就会形成很多的网络路径,因此当数据包走到每一个节点(设备)都会由路由算法下一条路径怎么走。
综上IP协议的作用是寻址,路由器是根据路由算法来决定下一个目的地。
₪网络接口层
生成了IP报头后,接下来交给网络接口层(Link Layer)在IP头部前面添加MAC头部并封装成数据帧(Data frame)发送到网络上。
IP头部中包含着接收方IP地址,表示网络包的目的地,通过这个我们可以判断这个网络包将要发向哪里,但是这个是在以太网中不行的。那么啥又是以太网呢?电脑的网线接口,以太网接口等等他们都是以太网的组成部分,以太网就是一种把局域网中的设备连接起来,使他们能通信的技术。
以太网判断网络包的方式与IP不同,所以要换成一个能与他方式相匹配的报头,这就是MAC报头。
所以最后的传输过程是这样:
₪结言
好了,关于计算机网络的TCP/IP四层模型我们就初步了解到这里,以后网络基础扎实了再做深入了解,希望你有收获,下节见!