网络的基本介绍
# 网络的基本介绍
# 概述
网络,简而言之,是指由多个节点(如计算机、服务器、手机等)通过通信链路相互连接而成的系统,用于信息的交换、共享和传递。网络可以是物理的,如电线、光纤等构成的基础设施,也可以是逻辑的,如因特网上的各种协议和服务。网络的发展经历了几个重要的阶段:
- 早期发展阶段:20世纪50年代至60年代,计算机主要用于军事和科研领域,最初的网络概念是为了实现计算机之间的资源共享和数据传输。1969年,美国国防部高级研究计划署(ARPA)资助的阿帕网(ARPANET)诞生,这是现代互联网的雏形,首次实现了多台计算机之间的远程通信。
- 分组交换技术:1960年代末至1970年代,分组交换技术的引入极大地提升了网络的效率和可靠性,为后续互联网的发展奠定了基础。这是通过将数据分割成小块(分组),每个分组独立寻址和传输,然后在接收端重新组装。
- TCP/IP协议的标准化:1980年代,TCP/IP协议(传输控制协议/互联网协议)成为事实上的标准,为不同网络之间的互联提供了统一的规则,促进了全球互联网的形成和发展。这一时期还出现了局域网(LAN)、广域网(WAN)等概念,以及电子邮件、文件传输等早期互联网服务。
- 万维网的出现:1991年,蒂姆·伯纳斯-李发明了万维网(World Wide Web),并开发出HTML、HTTP等标准,使得信息可以通过网页的形式被广泛访问和链接,极大推动了互联网的普及和应用。
- 互联网的商业化与大众化:1990年代中期以后,互联网开始迅速商业化,搜索引擎、电子商务、社交媒体等新兴服务不断涌现,互联网从科研工具转变为影响全球经济与社会生活的基础设施。
- 移动互联网时代:进入21世纪,尤其是智能手机和平板电脑的普及,开启了移动互联网时代。无线网络技术(如3G、4G、5G)的发展,使人们可以随时随地接入互联网,进一步加速了信息传播的速度和范围。
- 物联网与智能化:近年来,随着传感器、大数据、云计算等技术的发展,物联网(IoT)成为新的趋势,物体通过网络连接并交换数据,使得家居、交通、工业等多个领域向智能化迈进。
# 网络分层
计算机网络的分层可以根据不同的参考模型有不同的层数。最常提及的是OSI七层模型和TCP/IP四层模型(有时也被表述为五层模型,主要是将数据链路层和物理层合并考虑)。
协议族
是一系列相关协议的集合,指定一个协议族中的各种协议之间的相互关系并划分需要完成的任务的设计,称为协议族的体系结构或参考模型。TCP/IP是一个实现Internet体系结构的协议族,它来源于ARPANET参考模型。TCP/IP体系满足了不同分组交换计算机网络的互联需求,同时它也是网络通信中最流行的一个模型。TCP/IP协议族的体系结构 其实就是 TCP/IP模型。
OSI七层模型(Open System Interconnection Model)从上到下包括:
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
TCP/IP四层模型
(Transmission Control Protocol/Internet Protocol)通常包括:
- 应用层,相关协议:FTP(文件传输协议),SMTP(电子邮件传输协议),HTTP(超文本传输协议),DNS
- 传输层,相关协议:TCP,UDP
- 网络层(或称互联网层),相关协议:IP
- 数据链路层(也叫:链路层,包含数据链路层和物理层的功能)
OSI模型是一种理论上的全面框架,而TCP/IP模型是实际互联网架构的基础,更为常用。我们如今用的也是TCP/IP模型下的4层。
应用层:决定了向用户提供应用服务时通信的活动。
传输层:对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
网络层:用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。
链路层:用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。
# 分层的理由
一种东西的设计并非随意为之,网络分层也是如此。之所以要对网络分层主要有以下几点原因:
- 降低复杂性:网络通信本身是一个复杂的过程,涉及到数据的发送、接收、转发、打包、拆包等多个环节。通过分层,可以将这些复杂的任务分解为不同的层次,每个层次只负责一部分功能,从而使得整个网络体系变得更加简单和清晰。
- 提高可扩展性:网络分层使得每个层次都可以独立地进行设计、开发和维护。当需要增加新的功能或者改进现有功能时,只需要对相应的层次进行修改,而不需要对整个网络体系进行改动。这种模块化的设计方式大大提高了网络的可扩展性。
- 便于管理和维护:通过分层,可以将整个网络体系划分为不同的层次,每个层次都有明确的功能和职责。这使得网络的管理和维护变得更加方便和高效。当出现问题时,可以迅速定位到具体的层次,并采取相应的措施进行解决。
- 促进标准化:网络分层促进了网络协议和技术的标准化。各个层次都遵循统一的规范和标准,使得不同的网络设备、操作系统和应用程序可以相互通信和协作。这有助于实现网络的互联互通和资源共享。
# 通信数据流
利用 TCP/IP模型(或者 TCP/IP协议族)进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。
发送端-》应用层--> 传输层--> 网络层 --> 链路层 --》接收端--> 链路层--> 网络层--> 传输层-->应用层
使用 ARP 协议凭借 MAC 地址进行通信
IP 间的通信依赖 MAC 地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。这时,会采用 ARP 协议(Address Resolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
# http的版本
http(Hypertext transfer protocol)超文本传输协议,它是互联网上应用最为广泛的一种网络协议,工作在应用层。基于TCP协议(传输层)之上,规定WWW服务器 , 是浏览器之间信息传递规范。使用的默认端口号为80端口。https默认端口是443
我们现在常说的http,则是指的http请求。
- **HTTP/0.9 (opens new window)**:这是最早的HTTP协议版本,发布于1991年。它非常简单,只支持GET请求,不支持复杂的HTTP头部和消息体,也没有持久连接功能。由于这些限制,HTTP/0.9已经不再被广泛使用12。
- **HTTP/1.0 (opens new window)**:发布于1996年,支持更复杂的HTTP头部、消息体和请求方法(如GET、POST、HEAD等),并引入了持久连接功能。尽管如此,HTTP/1.0仍然存在每次请求都需要建立新连接的问题,导致在处理大量并发请求时效率较低12。
- **HTTP/1.1 (opens new window)**:发布于1997年,是当前最广泛使用的HTTP协议版本。它引入了持久连接(keep-alive),允许在同一个连接中复用多个请求和响应,减少了连接建立和释放的开销。此外,HTTP/1.1还支持管道化请求、缓存控制、范围请求等功能,大大提高了网络传输的效率和性能12。
- **HTTP/2.0 (opens new window)**:发布于2015年,是对HTTP/1.1的重大改进。HTTP/2.0使用二进制协议、头部压缩、多路复用等技术,显著提高了传输效率和可靠性。它允许在同一个连接上同时发送多个请求和响应,减少了请求排队的问题,并且引入了服务器推送功能13。
- **HTTP/3 (opens new window)**:发布于2019年(或2020年8月),基于QUIC协议 (opens new window),不再基于TCP而是采用UDP。HTTP/3解决了TCP的一些问题,如连接建立慢、丢包重传等,进一步提升了网络传输的速度和可靠性1。
# 查看网站的http版本
- 打开开发者模式
- 查看请求的请求头,
当然,不是每个网站都能查看的,如果别人不愿意开放这些信息,它是可以被隐藏的,毕竟可以通过权限或者加密来实现信息的隐藏。
# HTTP请求与TCP连接
- 每个HTTP请求不一定都会单独经历完整的三次握手和四次挥手过程。如果多个HTTP请求可以通过同一个已经建立好的TCP连接进行(例如,在HTTP/1.1中通过持久连接Keep-Alive特性),那么除了第一次请求外,后续在同一连接上的请求就不会再次触发新的三次握手。
- 对于HTTP/2和HTTP/3等更现代的版本,它们进一步优化了复用单个连接的能力,使得即使大量并发请求也能高效地处理而无需频繁地建立和断开连接。