计算机网络知识汇总
概要:本文主要是带领大家学习数据是如何在网络中传输的,以及计算机网络相关的知识点。另外笔者写的不是很详细,只是做个精简和归纳,感兴趣的同学可以去参考链接中深入学习。
前言
计算机最初只是孤立的一个运算机器,随着业务需求的不断发展,单台孤立的计算机已经不能够满足我们的需求,因此人们把一个区域内的多台计算机连接成一个网络即局域网,然而这些小的网络并不能满足对计算机日益增长的需求,因此把不同的局域网连接成一个全球性质的网络,我们称之为互联网,互联网就是把不同的局域网通过路由器连接起来的网络。
1.广域网、局域网、WLAN
广域网(Wide Area Network),简称WAN,是一种地域范围覆盖广的计算机网络的集合,通常所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家。由于其超长的覆盖范围,发送介质主要是政府或者大型企业部署的电话线或光纤,因此又被大家亲切的称为:外网、公网。
局域网(Local Area Network),简称LAN,相对于广域网(WAN)而言,主要是指在某一区域的计算机互联网络。“某一区域”指的是同一办公室、同一建筑物、同一公司和同一学校等,一般是方圆几千米以内。
更通俗地讲,你用手机上的移动网路,浏览网页时用到就是运营商体提供的WAN,即广域网。打开手机连接路由器,再访问网页,手机使用的就是局域网。是的,路由器这种工具往往充当广域网与局域网接入的“中间媒介”。
WLAN和有线局域网最大的区别就是“无线”。无线局域网WLAN的范围实际上很广,按照定义,以各种无线电波(如激光、红外线等)的无线信道来代替有线局域网中的部分或全部传输介质所构成的网络都叫WLAN。但是,由于一些技术比如WiFi、蓝牙使用的很多,以至于它们几乎代表了WLAN。实际上,WLAN是指一种网络组织架构,而WiFi是WLAN中的技术标准之一罢了。
局域网内部通过MAC地址寻址,而网络间的寻址是通过IP地址进行的。在局域网内部,通信的基本单位是帧(Frame),而帧中包含了源和目的设备的MAC地址。因此,局域网内部的通信确实是通过MAC地址进行寻址的。相反,在网络间通信时,通信的基本单位是数据包(Packet),而数据包中包含了源和目的设备的IP地址。因此,网络间的通信主要依赖于IP地址进行寻址。
如果通信双方在同一局域网内,可直接通过数据链路层进行相互通信,如果通信双方在不同网络内,则要通过三层地址(如IP地址)进行。
2.网卡、网卡驱动
网卡是计算机中用于连接到网络的硬件设备,负责将计算机的数据转换成网络可识别的信号并进行传输。网卡通过物理接口(如以太网端口)与计算机连接,使计算机能够与网络通信。
网卡驱动是软件程序,用于让操作系统能够理解和控制网卡硬件。它充当操作系统与网卡之间的桥梁,确保它们能够正确交互。
网卡是硬件设备,而网卡驱动是软件,两者紧密合作。网卡需要正确的驱动程序来与操作系统协同工作,以便在网络上发送和接收数据。
3.防火墙
防火墙是一种网络安全解决方案,可保护您的网络免受多余流量的影响。防火墙基于一组预编程的规则阻止外来的恶意软件。这些规则还可以防止网络中的用户访问某些站点和程序。
几乎所有防火墙都是状态型的,并分为两种通用类型:网络防火墙和基于主机的防火墙。基于主机或计算机的防火墙只保护一台计算机或”主机”, 通常部署在家中或个人设备上,通常与操作系统成套提供。
另一方面,防火墙网络可保护通过分界点的所有设备和流量,从而实现了较大的可扩展性。顾名思义,网络防火墙在网络层面发挥作用,即 OSI 第 3 和 4 层,扫描外部来源和局域网 (LAN) 之间的流量,或网络内不同网络段之间的流量。它们被放置在网络或网络段的周界作为第一道防线,并通过执行深入的数据包监测和数据包过滤来监控流量。如果数据包的内容不符合此前基于网络管理员或安全团队创建的规则选定的条件,则防火墙 会拒绝并阻止该流量。
网络的分层架构
我们一开始接触网络的时候,看到什么应用层,数据链路层就感到头疼,就会想为什么要这么多层呢?这是为了有更好的扩展性,可维护性,从物理层到应用层,每一层都有其特定的职责。这种分层设计在网络通信中被广泛应用,以实现高效、可靠的数据传输。
数据在传输的过程中,可能出现丢包,数据重复的问题,所以网络要效验数据的完整性,不可谓不复杂,所以让每一层专注于自己的职责,只管对接上一层和一层的接口就行,这样后面更换这一层的程序或者进行扩展就会更方便。这里我们来看下TCP/IP协议簇:
名称 | 协议或代表 | 作用 |
---|---|---|
应用层 | DNS,HTTP,SSH,SMTP,FTP… | 直接面向用户,提供了丰富的网络服务和功能 提供数据的加密、认证和授权等安全功能 定义数据的格式和结构 |
传输层 | TCP,UDP,SCTP(流控制传输协议) | 实现进程之间(端到端)的通信 提供流量控制和拥塞控制 |
网络层 | IPv4,IPv6,ARP,ICMP | 负责网络寻址,屏蔽网络差异,提供透明传输 为网络间通信提供路由选择 数据包封装和解封装 |
数据链路层 | 以太网(Ethernet),无线LAN | 将网络层传递下来的数据包封装成帧 错误检测和纠正、流量控制、帧同步 |
物理层 | 光纤,双绞线电缆,无线设备 | 传输原始比特流 |
1.物理层
位于各计算机网络体系的最低层,负责在物理传输介质之上为“数据链路层”提供一个原始比特流(也就是数据是以一个个0或1的二进制代码形式表示的)的物理连接。物理层并不是特指某种传输介质,而是指通过传输介质,以及相关的通信协议、标准建立起来的物理线路。
2.数据链路层
数据链路层是计算机网络体系结构中的第二层,位于物理层之上,网络层之下。它的主要任务是在直接相连的两个节点之间提供可靠的数据传输服务。数据链路层负责将网络层传递下来的数据包封装成帧,并通过物理层进行传输。此外,数据链路层还处理错误检测和纠正、流量控制、帧同步等功能。
数据链路层的作用,则是将网络层下发的数据包,根据自己所处的网络类型,将其封装成帧数据以后发送给下一跳地址。以ip数据包传输为例,首先ip层通过目标地址,在路由表中找到数据包通往目的需要经过的下一跳ip地址,并传给数据链路层,数据链路层根据ip,通过arp协议找到该ip地址所对应机器的mac地址,最后根据自己所处的网络对应的链路层协议,将数据包封装成帧以后,发给拥有该mac地址的机器。
环回地址:本机内不同的进程,可以通过TCP/IP协议来进行通信,当数据包到达数据链路层时,如果判断数据包发往本机,则直接发送过去,否则通过ARP协议获取的以太网MAC地址,将数据封装成帧后,发往该MAC地址所属的机器上。
3.网络层
当源端和目的端位于不同网络(物理上分隔开的计算机网络,可以是不同的局域网(LAN)、广域网(WAN)或者全球互联网。这些网络可能由不同的组织、公司或个体管理,拥有独立的地址空间和网络规则)的时候,直接通信是不可行的,此时就需要由网络层解决(通过路由选择、拥塞控制等功能)。
如果我们把物理层和数据链路层比作市内交通,那么网络层就可以比作连接不同城市交通的中转车站、机场或码头。网络层可以把来自其他网络中的数据传送到下一个途经的网络或本网络中的目的节点。
网络层的数据交换技术主要是指网络中间结点所提供的数据交换功能,这些中间结点并不关心数据内容,只提供一个交换设备,把数据从一个结点转发到另一个结点,直至达到目的端。
这里主要说一下报文交换和分组交换:
- 报文交换就是先在中间结点上进行缓存(这类中间结点通常是由具有存储能力的交换机、路由器承担),然后再由中间结点在线路空闲时把数据发送出去。
- 分组交换就说将报文根据各网络传输规定的MTU(最大传输单元)分成多个组,进行传输。在要转发的数据包头部加上源节点和目的节点的IP地址,成为数据报,然后通过路由技术一级级地把数据转发下去。各结点可根据数据报中所包括的地址和路由信息,选择不同的路由路径进行发送。另外,各个结点也可能随时根据网络的流量、故障等情况选择最佳路径。
ARP和RARP协议:
- ARP协议的作用就是,在一个局域网内,当一台主机要查找某个IP所对应机器的MAC地址时,会向局域网内所有的机器广播这个请求,并捎带自己的MAC地址,当其查找的机器,收到该数据包时,会记录请求机器的ip和mac地址,并将自己的mac地址和ip返回给请求者,这就是ARP协议做的事情,本质上是通过ip去查找mac地址。
- RARP的作用是,将mac地址转换成ip地址
IP协议,如IPv4,用于将多个分组交换网络(数据报交换方式)连接起来的最典型通信协议。该协议是无连接的服务,负责在源地址和目的地址之间传送数据报,然后为了适应不同网络对分组大小的要求,需要对上层传来的报文进行分割,最后调用本地网络协议将数据报传送给下一个网关或目的计算机。作用:寻址、数据报的封装、分段与重组。
4.传输层
网络层负责将数据传输到对方的主机,而机上使用什么协议来接受这个信息就由传输层来完成,所以传输层实现的是进程到进程间的连接。在TCP/IP协议中,用”源IP地址、目的IP地址、源端口号、目的端口号、协议号”这五部分组成一个套接字,来标识一次通信,一个进程可以绑定多个端口号,因为一个进程可以有很多线程或者说是子进程等,这每一个都对应一个端口号,所以一个进程可以绑定多个端口号。
注意,上面说的TCP/IP协议实际上是指两种不同的协议:TCP(传输控制协议)和IP(网际协议)。这两种协议通常一起使用,构成了TCP/IP协议套件,是互联网及许多局域网的核心协议。这里简单区分一下:
- TCP(传输控制协议):负责提供可靠的、面向连接的数据传输服务,确保数据按照正确的顺序、可靠地传输到目的地。它对数据进行分段、传输和重组,提供流量控制和拥塞控制等功能。
- IP(网际协议):负责在网络中寻址和路由数据包。它定义了数据包的格式,并规定了如何在网络中进行传输和路由选择。
TCP协议的可靠性保证给IP协议提供了可靠环境,从而使得IP协议可以不必考虑传输的可靠性,专注于网络层的功能。这也是协议分层的初衷。
端口号分类
- 公认端口:0~1023,明确与某种服务绑定,比如各种协议;
- 注册端口:1024~65535:松散的绑定一些服务,也就是有许多服务绑定这些端口。
TCP/UDP加上特定的端口号就可以表示应用层的某个协议;
常用的端口号
- TCP+20/21: ftp协议(文件传输协议);
- TCP+22: ssh协议(专门为远程登录提供的安全性协议)
- TCP+25: SMTP协议(简单邮件传输协议)
- TCP/UDP+53: DNS协议(域名解析协议)
- TCP+80: Http协议(超文本传输协议)
- TCP+443: Https协议(超文本传输安全协议)
TCP协议
IP协议解决了数据包的路由和传输,上层的TCP就可以不再关注路由和寻址;TCP协议解决了传输的可靠性和顺序问题,上层的应用层就可以直接使用TCP协议进行数据传输,不再需要关心数据段的丢失和重复。
http是要基于TCP连接基础上的,简单的说,TCP就是单纯的建立连接(三次握手),不涉及任何我们需要请求的数据;http协议使用来收发数据,就是为实际应用而来的;
TCP被认为是一种流式传输层服务。它表示TCP发送端从应用程序接收到字符流,并从这个流中提取适当的长度创建数据段,然后将其发送到网络上。TCP接收端则接收数据段,从中提取数据,若没有按序号到达还要对其进行排序,并将其作为字符流交付给接收端应用程序。这样就完成了数据的传输。
TCP采用了很多手段来保证可靠传输
- 1.连接管理机制:在传输数据前需要进行建立连接,也就是三次握手,在数据传送完后还需要释放连接,也就是四次挥手。(四次挥手中最后一个 ACK 是单向的确认,不需要回复)
- 2.数据分段:TCP以报文段为单位进行发送,在建立TCP连接的时候,两端协商TCP报文段中的数据字段(也称为数据包)的最大长度(MSS);其长度加上首部长度就是整个TCP报文段的长度;(每个报文段的大小可能会因为路径MTU的限制而进行分片,不一定等于MSS)
- 3.校验和:提供了一种简单的校验,如果收到段的校验和和原来的有差别,那接收方就会丢掉这个报文段;(并不能检测到所有的错误,例如无法检测到数据在传输过程中的重复)
- 4.序列号:TCP给发送的数据包的编号,如果接收端收到乱序后会进行重新排序,收到重复的也会进行丢弃;
- 5.确认应答:接收方收到报文后会回复确认(累计确认:对所有收到的按序的只确认最后);
- 6.重发控制:TCP发出一个报文段后,就会启动一个定时器,等接收方确认这个报文段,如果不能及时收到确认,将重发这个报文段;
- 7.流量控制:通信的双方都有固定大小的缓冲区,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,就把窗口缩小(窗口大小就是指无需等待确认就可以继续发送数据的最大值),并把窗口值告诉发送端(提示发送方降低发送的速率,防止包丢失)是利用滑动窗口来实现;
- 8.拥塞控制:当网络产生拥堵时,减少数据的发送;主要是通过拥塞窗口来实现;(慢开始和拥塞避免;快重传和快恢复);
可以去看看原文真的写的详细,可以学到很多知识。
为什么握手是三次而挥手是四次?因为服务器收到客户端的SYN连接建立报文后,可以直接发送SYN+ACK报文,即应答和同步,但是在关闭连接时,服务器可能还有数据要发送,所以只回复一个应答告诉客户端自己收到了,但是我这不能关,得等我发完了,我才能发送FIN连接释放报文。
UDP协议和TCP协议的区别
- UDP首部默认是8个字节的固定长度,而TCP是20-60字节
- UDP在传送数据之前不需要建立连接,收到后也不需要给出确认,所以没有办法保证可靠交付。但是传输效率就要比较TCP快,UDP提供的最大努力的交付,并不一定保证传输过去后是准确无误的,它是想尽可能快的传送尽可能多的信息。
- UDP是面向报文的协议,应用层交给UDP多长的协议,就发送多长的报文,不合并也不拆分,保留报文的边界,一次发送一个。而TCP是面向字节流的协议,没有固定的报文或者说报文边界概念,双方都会有一个缓冲区,如果字节流太长,TCP就会拆分进行发送,如果字节流很短,那也可以等着缓冲区中的字节流变长了以后再构成一个报文段进行发送。
- 基于UDP的应用层协议:DNS、TFTP(简单文件传输协议,端口69);基于TCP的:HTTP、HTTPS、FTP、SSH;
- UDP的引用场景:音视频传输(qq和微信,加了一些算法提高可靠信)、共享屏幕等;TCP的应用场景:文件的上传和下载、浏览器上网、绝大多数应用都是TCP;
5.应用层
TCP/IP 模型中应用层位于传输层之上,传输层的端口号用于标识数据所对应的应用层协议。也就是说,有端口号的协议都是应用层协议。应用协议是终端设备之间的应用通信规则。应用之间交互的信息叫消息,应用协议定义这些消息的格式以及消息的控制或操作的规则
应用程序有很多,包括 Web 浏览器、电子邮件、远程登录、文件传输、网络管理等。这些应用程序都会使用应用协议进行通信,应用协议正是为了实现应用程序的功能而设计和创造的。
远程管理
网络设备的管理方式,分为本地管理和远程管理。远程管理是从本地主机登录到网络对端设备,向网络对端的设备发送管理数据,以实现设备管理的操作方式。通过远程管理,不仅可以直接使用主机上的应用,还可以对主机进行参数设置。远程登录主要使用 Telnet 和 SSH 两种协议管理网络设备。
SSH 协议全程是安全外壳协议,目的就是为了取代 Telnet(具有安全隐患) ,SSH 是加密的远程登录协议,提供更加安全的远程登录服务。使用 SSH 后会加密通信内容。即使信息被截获,由于无法解密,也无法了解数据的真正内容。SSH 协议常用版本是 SSHv2 ,SSH 客户端通过 SSHv2 协议与 SSH 服务器建立一条 TCP 的加密信道,建立这条安全信道的方式是让客户端使用服务器的 RSA 公钥来验证 SSH 服务器的身份。SSH 协议默认使用 TCP 22 端口。
如果客户端成功验证了服务器的身份,它们之间就会创建出一个会话密钥,并用双方协商出来的加密算法和会话密钥,对这个信道传输的数据进行加密。这样,两台设备之间就建立了一条安全的信道,使用这条安全信道发送密码,密码以密文的形式传输,通过服务器的身份认证。SSH 就是通过这种方式建立加密信道,确保 SSH 服务器,也就是被管理设备的 Shell 免遭非法用户操作。
FTP
FTP 是网络上文件传输的标准协议,FTP 使用 TCP 作为传输协议,支持用户的登录认证和访问权限的控制。FTP 用于服务器和客户端之间传输文件,是 IP 网络上传输文件的通用协议。FTP 采用客户端和服务器的模式,使用 TCP 协议提供可靠传输。FTP 可以对登录服务器的用户名和密码进行验证,允许客户端指定文件的传输类型,并且可以设置文件的传输权限。
FTP 使用两条 TCP 连接实现文件传输。一条是 FTP 控制连接,用来控制管理;另一条是 FTP 数据连接,用于数据传输。FTP 控制连接用于传输 FTP 控制命令和命令执行的应答信息,比如登录用户名和密码的验证、发送文件的名称、发送方式的设置。这条连接在整个 FTP 会话过程中一直保持打开,通过 ASCII 码字符串发送请求和接收应答。在控制连接上无法发送数据,而 FTP 数据连接用于文件和文件列表的传输,仅在需要传输数据时建立数据连接,数据传输完毕后终止。
HTTP
当用户在浏览器的地址栏里输入 Web 页的 URL 后,HTTP 的处理就开始了。HTTP 默认使用 80 端口。它的工作机制,首先是客户端向服务器的 80 端口建立一个 TCP 连接,然后在这个 TCP 连接上进行请求和应答以及数据报文的发送。
HTTP 中常用的有两个版本,一个是 HTTP 1.0 ,另一个是 HTTP 1.1 。在HTTP 1.0 中每一个命令和应答都会触发一次 TCP 连接的建立和断开。而从 HTTP 1.1 开始,允许在一个 TCP 连接上发送多个命令和应答,这种方式也叫保持连接( keep-alive )。可以大量减少 TCP 连接的建立和断开操作,提高传输效率。
网络管理应用
很多应用层协议广为人知,是因为我们在日常上网的过程中,会大量使用与这些应用协议有关的应用程序,这类应用协议称为终端用户应用协议;另外还有一些应用协议在网络中广泛使用,但我们对它们却少有听闻,最多在网络无法正常使用时,才会意识到它们的存在,这类应用层协议称为系统应用协议。
在日常工作中,网络工程师经常使用到的系统应用协议有 DHCP 协议和 DNS 协议。
封装和分用
当应用程序采用TCP传送数据时,数据被送入协议栈中,然后,通过每一层直到被当做一串比特流传入网络中。其中每一层收到数据都会对数据增加一些首部信息(有的还需要尾部信息)。TCP传给IP的数据单元称为TCP报文段或简称为TCP段(UDP传给IP的数据单元称为UDP数据段),IP传给数据链路层的数据单元称为IP数据报。通过以太网传输的比特流称为帧。
当目的主机收到了一个以太网的数据帧时,数据要从协议栈中,由底往上,每一层都检查报文首部中的协议标识,以确定接收数据的上层协议,同时去掉各层协议上的报文首部。经过协议栈的分用过程后,最终传递给应用层,供目的主机上的应用程序使用。
疑问解答
1、为什么就不能直接通过二层的帧在不同网络中进行传输呢?
不同网络中的统一标识就是三层地址(如IP地址),它不能识别二层的MAC地址。从上面的封装中我们可以得知,三层IP包封装成帧后,其中封装的源和目的IP地址作为帧的数据部分,不会改变。这些信息就是用来进行三层寻址的,且这些信息在帧传输过程中是不会改变的。
A网络发送给B网络的帧,在转发过程中,帧的MAC地址不断变化,但是IP地址永远不变。因为要不断靠MAC地址在局域网中寻找下一个转发节点或目的节点。