一、计算机网络体系结构
1、应用层
应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间的通信和交互的规则。常见的协议有域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等等。我们把应用层交互的数据单元称为报文。
2、运输层
运输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。复用指多个应用进程可同时使用下面运输层的服务,分用是运输层把收到的信息分别交付上面应用层中的相应进程。主要协议TCP、UDP。
3、网络层
在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换节点,确保数据及时传送。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在TCP/IP体系结构中,由于网络层使用IP协议,因此分组也叫IP数据报。
4、数据链路层
数据链路层通常简称为链路层。两台主句之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻的节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。
5、物理层
物理层的作用是实现相邻计算机节点之间比特流的透明传输,尽可能屏蔽具体传输介质和物理设备的差异,使其上面的数据链路层不必考虑网络的具体传输介质是什么。
二、HTTP
1、基本概念
HTTP,即超文本传输协议,是一个在计算机世界里专门在两点之间传输文字、图片、视频等超文本数据的约定和规范。
常见状态码:
200 OK:成功状态码,表示一切正常。如果是非HEAD请求,服务器返回的响应头有body数据。
204 No Content:响应头没有body数据。
206 Partial Content:应用于HTTP分块下载或断点续传,表示响应返回的body数据并不是资源的全部,而是其中一部分。
301 Moved Permanetly:表示永久重定向,说明请求的资源已经不存在了,需改用新的URL再次访问。
302 Found:表示临时重定向,说明请求的资源还在,但暂时需要用另一个URL来访问。
403 Forbidden:表示服务器禁止访问资源,并不是客户端的请求出错。
404 Not Found:表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。
501 Not Implemented:表示客户端请求的功能还不支持。
502 Bad Gateway:服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
503 Service Unavailable:表示服务器当前很忙,暂时无法响应服务器。
常见字段:
Host字段:客户端发送请求时,用来指定服务器的域名。
Content-Length字段:服务器在返回数据时,表明本次回应的数据长度。
Connection字段:用于客户端要求服务器使用TCP持久连接,以便其他请求复用。
Content-Type字段:用于服务器回应时,告诉客户端,本次数据是什么格式。客户端请求的时候,可以使用Accept字段声明自己可以接受哪些数据格式。
Content-Encoding字段:说明数据的压缩方法。表示服务器返回数据使用了什么压缩格式。客户端在请求时,用Accept-Encoding字段说明自己可以接受哪些压缩方法。
2、Get和Post
Get方法的含义时请求从服务器获取资源,这个资源可以时静态的文本、页面、图片视频等。而Post方法则是相反操作,它向URI指定的资源提交数据,数据就放在报文的body里。
Get方法是安全且幂等的,因为它是只读操作,无论操作多少次,服务器上的数据都是安全的,且每次的结构都相同。
Post因为是新增或提交数据的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。
3、HTTP特性
优点:简单、灵活和易于扩展、应用广泛和跨平台。
缺点:无状态、明文传输、不安全(通信使用明文、不验证通信方的身份、无法证明报文的完整性)。
对于无状态的问题,Cookie一般用来保存用户信息,数保存在客户端(浏览器端)。Session的主要作用就是通过服务端记录用户的状态,数据保存在服务端,安全性更高。
HTTP的安全问题,可以用HTTPS的方式解决,通过引入SSL/TLS层。
HTTP协议是基于TCP/IP,并且使用了请求-应答的通信模式:
HTTP1.0短连接,每发起一个请求,都要新建一次TCP连接。HTTP1.1提出了长连接的通信方式,也叫持久连接,减少了TCP连接的重复建立和断开造成的额外开销。HTTP1.1采用长连接的方式,是的管道网络传输成为可能,即在同一个TCP连接里,客户端发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。HTTP1.1存在对头阻塞问题,即当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排队的所有请求也一同被阻塞了,会招致客户端一直请求不到数据。
4、HTTP与HTTPS
HTTP在安全上的风险:窃听风险、篡改风险、冒充风险;
HTTPS在HTTP与TCP层之间加入了SSL/TLS协议,解决以上风险:信息加密、校验机制、身份证书。混合加密的方式实现信息的机密性,解决了窃听的风险。摘要算法的方式来实现完整性,它能够为数据生成独一无二的「指纹」,指纹用于校验数据的完整性,解决了篡改的风险。将服务器公钥放入到数字证书(服务器公钥+CA的数字签名)中,解决了冒充的风险。
混合加密:对称加密(只使用一个密钥)和非对称加密(公钥和私钥)结合,在通信建立前采用非对称加密的方式交换「会话秘钥」,后续就不再使用非对称加密。在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。
HTTPS建立连接的过程:
SSL/TLS协议基本流程:客户端向服务器索要并验证服务器的公钥;双方协商生产会话密钥;双方采用会话密钥进行加密通信。
5、HTTP/1.1、HTTP/2、HTTP/3演变
HTTP/2的改进:
头部压缩,HPACK算法,在客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,只发送索引号而不发送字段。
二进制格式,发送的不再是纯文本形式的报文,而是二进制格式。
数据流,HTTP/2的数据包不是按顺序发送的,每个数据量都标记着一个独一无二的编号,规定客户端发出的数据流编号为奇数,服务器发出的数据流编号为偶数。客户端可以指定数据流的优先级。
多路复用,可以在一个连接中并发多个请求或回应,而不用按照顺序一一对应。
服务器推送,改善了传统的请求-应答工作模式,服务不再是被动地响应,也可以主动向客户端发送消息。
HTTP/2缺陷:多个HTTP请求在复用同一个TCP连接,下层的TCP协议是不知道有多少个HTTP请求的,一旦发生了丢包现象,就回触发TCP的重传机制,这样在一个TCP连接中的所有HTTP请求都必须等待这个丢了的报被重传回来。
HTTP/3改进:
解决HTTP/2的缺陷,将HTTP下层的TCP协议改成了UDP,基于UDP的QUIC协议实现类似TCP的可靠性传输。
三、IP基础知识
1、IP基本认识
IP处于TCP/IP参考模型中的网络层,网络层的主要作用是实现主机与主机之间的通信,也叫点对点通信。
IP(网络层)和MAC(数据链路层):MAC的作用则是实现直连的两个设备之间通信,而IP则负责在没有直连的两个网络之间进行通信传输。
2、IP地址的基础知识
IPv4由32位正整数来表示,为方便记忆采用点分十进制的标记格式。
IP地址的分类:
最大主机数:假设主机号的位数为n,则最大主机数为2^n-2;
减2是因为:主机号全为1指定某个网络下的所有主机,用于广播;主机号全为0指定某个网络。
广播地址用于在同一个链路中相互连接的主机之间发送数据包。
在本网络内广播的叫做本地广播,在不同网络之间的广播叫做直接广播。
D类、E类地址没有主机号,所有不用用于主机IP。
多播用于将包发送给特定组内的所有主机。如:老师让最后一排的同学去黑板上做题。
IP分类的缺点:
同一网路下没有地址层次;不能很好的与现实网络匹配,C类地址能包含的最大主机数量太少,而B类地址能包含的最大主机数量又太多。
无分类地址CIDR:
表示形式a.b.c.d/x,其中/x表示前x位属于网络号,x的范围是0~32。
另一种划分网络号和主机号的形式,子网掩码,将子网掩码和IP按位计算AND,就可得到网络号。
为什么要分离网络号和主机号?
因为两台计算机要通讯,首先要判断是否处于同一个广播域内,即网络地址是否相同。提过网络地址相同,表面接收方在本网络上,那么可以把数据包直接发送到目标主机。路由器寻址工作中,也是找到对应的网络号,进而把数据包转发给对应的网络内。
子网掩码的另一个作用,划分子网,将主机地址划分为子网网络地址和子网主机地址。
共有IP地址与私有IP地址:
公有IP在整个互联网范围内保持唯一,私有IP允许组织内部的IT人员自己管理,自己分配,而且可以重复。
IP地址与路由控制:
IP地址的网络地址这一部分用于进行路由控制。
路由控制表中记录着网络地址与下一步应该发送路由器的地址。在主机和路由器上都会有各自的路由器控制表。
发送IP包时,首先确定IP包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。最长匹配。
环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。127.0.0.1作为环回地址,与该地址有相同意义的是一个叫做localhost的主机名,使用之歌IP或主机名时,数据包不会流向网络。
IP分片与重组:
数据链路的最大传输单元MTU不同,我们常见的数据链路是以太网,它的MTU是1500字节,当发送方的数据报超过MTU时,会把大数据报分片成小数据报,再交由接收方重组成大数据报。经过分片的IP数据报重组只能由目标主机进行,路由器不会进行重组。
分片传输中,一旦某个分片丢失,则会造成整个IP数据报作废,所以TCP引入了MSS也就是再TCP层进行分片不由IP层分片,对于UDP我们尽量不要发送一个大于MTU的数据报文。
IPv6基本认识:
IPv6是128位的。
亮点:IPv6可自动配置,即使没有DHCP服务器也可以实现自动分配IP地址;IPv6包头包首部采用固定的值40字节,去掉了包头检验和,简化了首部结构,减轻了路由器负荷;IPv6有应对伪造IP地址的网络安全功能以及防止先来窃听的功能。
IPv6的标识方法:每16位作为1组,每组用 :隔开。每组出现连续的0用 ::,只允许使用一次。
IPv6地址分类:单播地址,用于一对一通信;组播地址,用于一对多通信;任播地址,用于通信最近的节点;没有广播地址。
3、IP协议相关技术
DNS域名解析:
域名的层级关系类似一个树状结构:
域名解析工作流程:
ARP与RARP协议
DHCP动态获取IP地址
NAT网络地址转换
ICMP互联网控制报文协议
IGMP因特网组管理协议
参考链接:https://snailclimb.gitee.io/javaguide/#/docs/network/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C
参考文档:图解网络-小林coding
转载:https://blog.csdn.net/carolineme/article/details/116462535