计算机网络基础

264 阅读6分钟

计算机网络基础

进程之间如果需要通信,有以下俩种情况:

  • 同一个设备下的进程通信
  • 不同设备下的进程通信

第一种情况下,可采用的方法很多,如共享内存,管道,消息队列,信号等等。

而在第二种情况下,我们就要借助计算机网络了。

现在我们知道两个进程之间要通信,但是两个进程所在的设备不同,这就像人要和猫沟通,怎么办?

这个时候我们就要规定沟通的方式了,我们所规定的沟通方式就是计算机网络里的协议。

实践中计算机系统是十分复杂的,为了更好地区分各个模块的功能和作用,我们就进行了分层。

OSI模型有7层,TCP/IP模型有4层。我们现在讨论TCP/IP模型。

TCP/IP模型

应用层

我们最先能接触到的就是应用层。我们平时在计算机上使用的应用都是运行在应用层上的。

比如俩个人通过微信进行聊天,俩个人的微信分别运行在它们各自的手机上,处于不同的设备,必须通过计算机网络进行交流。

微信就是一个应用。

现在,一个人向另外一个人发送信息,计算机要怎么做呢?

计算机会在应用层把数据打包,然后传给模型中的下一层,即传输层。

你会发现,应用层好像没干什么事。

确实,因为应用层的应用只专注于提供应用服务。

应用层不关心数据如何传输。

应用层的协议根据应用的不同有很多,如HTTP,SMTP,FTP,DNS,Telnet等。

应用层运行在操作系统的用户态,传输层及其以下运行在操作系统的内核态。

传输层

传输层服务于应用层。

专注于为应用层传输数据,提供数据支持。

传输层的协议主要有两个

  • TCP协议
  • UDP协议

TCP协议非常稳定,是面向连接的,可靠的。

面向连接的意思是TCP协议要求先建立两个进程之间的链接。

可靠的意思是TCP协议会严格保证数据可靠,完整。

UDP协议它不如TCP稳定,它只负责把数据包发出去,其他概不负责。

所以UDP协议下数据不可靠,但是效率非常高,实时性强

所以传输层两个协议的应用场景不同

应用层传输的数据有可能很大,这时候TCP会进行分段,TCP最大的报文段长度为MSS。

但是UDP不会分段。

当设备作为接收方时,传输层负责把数据传给应用,可是怎么知道要传给哪一个应用呢?

这个时候需要一个编号,这个编号就是端口。

例如80一般是web服务器用的,22一般是远程登录服务器用的。

浏览器上一般我们会开很多个标签栏,每个标签栏都是独立的进程。操作系统会为它们分配临时的端口号。

由于传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用。

网络层

如果不讲网络层,可能我们会认为是传输层在负责数据的传输,但是不是这样的。

分层的意义就是不让一个层级承担太多的任务

实践中网络是复杂的,不仅仅只有接收方和发送方,还包括诸如网关,路由等等

在这样的网络中传输不应该交给传输层一个人完成。

传输层只要负责服务应用就好了,帮助实现应用和应用的通信。

下面的就让网络层来做吧。网络层将实现实际的传输任务。

传输层最常用协议的就是IP协议。

前面我们说UDP不会分段,那数据太大怎么办?

IP会进行分片。

IP协议会把传输层的报文加上ip头部,组装成ip报文。

如果此时ip报文超过MTU,IP就进行分片。

IP协议最重要的两个功能

  • 寻址
  • 路由

寻址,字面意思。寻找目标的地址。

网络层中每个设备都有编号,这就是IP地址。

可是在计算机网络中设备那么多,怎么找呢?难道一个一个比对吗?显然不现实。

因此,对于IPV4协议 。IP地址有两层意义

  • 网络号,网络号负责找到子网。
  • 主机号,主机号负责找到子网中的具体设备。

怎么分的呢?这需要配合子网掩码才能算出 IP 地址 的网络号和主机号。

将IP地址和子网掩码进行按位与运算,就可以得到网络号和主机号。

寻址过程中,先根据网络号找到子网,再寻找具体的主机。

路由功能是针对计算机网络的复杂性提出的。

网络中的双方一般不在一根网线上,途中要经过很多网关、路由器、交换机等众多网络设备。

那么就会形成很多条网络的路径,因此当数据包到达一个网络节点,就需要通过路由算法决定下一步走哪条路径。

路由器寻址工作中,就是要找到目标地址的子网,找到后进而把数据包转发给对应的网络内。

网络接口层

为什么需要网络接口层?

因为在进入广阔的计算机网络之前,数据会先进入以太网。

以太网是什么?

电脑上的以太网接口,Wi-Fi接口,以太网交换机、路由器上的千兆,万兆以太网口,还有网线,它们都是以太网的组成部分。以太网就是一种在「局域网」内,把附近的设备连接起来,使它们之间可以进行通讯的技术。

在以太网中通信要使用MAC地址。

所以网络层传下来的数据要多封装一个MAC头部。

它包含了接收方和发送方的 MAC 地址等信息,我们可以通过 ARP 协议获取对方的 MAC 地址。

所以说,网络接口层主要为网络层提供「链路级别」传输的服务,负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标识网络上的设备。