计算机网络总结总要知识点

200 阅读10分钟

OSI分层
物理层,数据链路层,网络层,运输层,会话层,表示层,应用层
TCP/IP分层
网络接口层,网络层,运输层,应用层
五层协议
物理层,数据链路层,网络层,运输层,应用层
hppt和https
http是一个超文本传输协议,是明文的发送了一个问题。
https是一个提供数据安全和完整性的协议,负责网络的加密,电脑会先和服务器建立一个安全的连接通道,然后服务器会发送一份网站的证书信息到我们电脑,告诉我们访问的信息没有问题,等到确认信息之后服务器会生成一个加锁的箱子,给电脑一个箱子和一个钥匙,电脑把信息给放到箱子里面,再发送过去让服务器打开,https是http基础上加了一个SSL/tls加密保证数据传输过程的安全性。
http是80端口,https是433端口
http和https无状态协议,如何理解无状态协议,如何实现有状态的请求
无状态协议,服务端不会记录客户端是谁,java可以通过session/cookie实现无状态请求
由服务器生成session,并返回 sessionid给客户端的cookie中,cookie访问会通过sessionid取对应的session值。
cookie和session的区别
cookie可以存储在浏览器或者本地,session只能在服务器,session能存储任意的java对象,cookie只存储String类型对象
session比cookie更有安全性cookie有安全隐患,通过拦截本地文件找到cookie进行攻击
session占用服务器性能session过多,增加服务器压力
单个cookie保存数据不超过4k,很多浏览器都限制一个站点最多保存20个cookie,session是没有限制和服务器内存大小有关
http长连接和短连接
http1.1之后都是长连接
http协议是基于请求/响应模式,只要服务端给了响应,本次http请求结束。
长连接和短链接都是TCP连接。TCP连接是一个双向通道,它是保持一段时间不关闭。
HTTP是应用层协议,TCP是传输层协议。
设置Connection为keep-alive就是长连接
长连接是为了复用多个http请求复用同一个TCP连接,节省了很多TCP连接的消耗。\

image.png cookie作用
Cookie是某些网站为了辨别用户身份进行session跟踪而存储在用户本地终端上的数据,由客户客户端计算机暂时永久式的保存信息。
cookie解决了什么问题
web程序是使用HTTP协议传议,对事务处理没有记忆。缺少状态意味着如果后续处理前置信息,必须重传,导致每次连接传送的数据量增大,在服务器不需要前信息时他的应答较快
第一次登录后 服务器返回一些数据给浏览器,然后浏览器保存在本地上面,当该用户第二次请求时,会把上次存储的cookie数据发送给服务器,然后服务器会根据浏览器的数据就能判断当前用户是那个
特点:cookie存储数据量有限,不同浏览器有不同存储大小,但一般不超过4kb
cookie什么时候产生
cookie的使用一般先看需求。浏览器可以禁用cookie,服务端可以不set-cookie
客户端向服务器发送一个请求的时候,服务端向客户端发送一个cookie。然后将cookie的保存方式,一种是将cookie保存在内存中,还有一种是保存在客户端中
cookie缺陷
数量受到限制。一个浏览器创建最多为300个,并且每个不超过4kb,每个web站点设置cookie不超过20个
安全性无法得到保障
浏览器可以禁用cookie
cookie的应用场景
对于安全性要求不高
不需要存储大量数据
主要应用场景:用来做客户端与服务器之间状态保持技术。
session
web中会话
用户点开一个浏览器然后打开多个超链接,访问多个web资源然后关闭浏览器,整个过程称为一个会话。
什么是session
在计算机网络应用中称为“会话控制”session对象存储在特定的用户会话所需属性的配置信息。
sessi是另一种记录客户状态机制。不同的是cookie保存在浏览器中,而session保存在服务器上。客户端浏览器访问服务器时,服务器把客户端信息以某种形式记录在服务器上。
session什么时候产生
当用户请求来自web页面时,如果该用户还没有会话,则web服务自动创创建一个session对象
这样当用户在应用程序web页跳转的时候,存储在session对象的变量不会消失,而在web会话中一直存在。
cookie和session结合使用
1.存储在服务端,通过cookie存储一个sessionid具体数据保存在session中,如果用户已登录,则服务器根据sessionid在库中获取用户的session数据。
2.将session数据加密存储在cookie中。
url和uri的比较
URI是统一资源标识符,表示web上每一种可用资源,如HTML文档图像视频片段,程序都由一个URI进行标识的。
URI的结构组成
URI通常由三部分组成
1.资源命名机制
2.存放资源主机名
3.资源自身名称
URL是URI的子集,译为统一资源定位符
URL是描述信息资源字符串,主要用在各种客户端和服务器程序上面
采用URL可以用一种统一格式描述各种信息资源。
URL的一般格式为
1.协议(或称服务方式)2.存有该资源主机IP地址3.主机资源具体地址。
URL和URI的区别
都定义了资源是 什么,但URL定义了如何访问资源。
URL是具体的URI一个子集,他不仅唯一标致资源,还提供了定位资源信息。URI是一种语义上抽象的概念,它可以是绝对的也可以是相对的,而URL提供足够信息定位,是绝对的。
TCP三次握手,四次挥手
第一次握手:客户端给服务器发一个SYN报文,指明初始化序列号ISN,此时客户端处于SYN—SENT状态。
首部的同步位SYN=1初始化序列号seq=x SYN=1的报文段不能携带数据,但要消耗掉一个序号。
第二次握手:服务器收到客户端的SYN报文之后,会以自己的SYN报文应答,并且也是指定了自己的初始化序列号ISN。同时会把客户端ISN+1最为ACK的值,表示自己已经收到客户端的SYN,此时服务器处于SYN-RCVD的状态。
在确认报文段中的SYN=1,ACK=1,确认号ack=x+1初始序列号seq=y
第三次握手:客户端收到SYN报文后,会发送一个ACK报文,也是一样把服务器的ISN+1作为ACK的值,表示已经收到了服务短短SYN报文,此时客户端处于ESTABLTSHED,此时双方已经建立连接
确认报文段ACK=1确认号ack=y+1,序号seq=y+1ACK报文段可以携带数据,不携带数据不消耗序号。
为什么要三次握手,两次就不可以
第一次:客户端发送网络包,服务端收到了
得出结论,客户端的发送能力和服务端的接受能力是正常的
第二次:服务端发包,客户端收到了
得出结论:服务端的发送接收能力是正常的。不过此时服务器并不能确认客户端的接受能力是否正常。不过此时服务器并不能确认客户端的接受能力是否正常。
第三次握手:客户端发包,服务端收到了。这样服务端得出结论:服务端的接受发送能力是正常的。
什么是半队列连接
服务器收到客户端SYN后,处于SYN——RCVD状态,此时双方还没有完全建立其连接,服务器会把此种状态下请求连接放在一个队列里,我们把这个队列称为半连接队列.
还有一个是全连接队列,完成三次握手,建立起连接会放在全连接队列中。如果队列满了会出现丢包。
关于SYN-ACK的重传问题:服务器发送完SYN-ACK包,如果未收到客户确认包,服务器首次重传,等待一段时间仍未收到客户确认包进行二次重传。如果重传次数超过系统规定的最大重传次数将连接信息从半连接队列中删掉。
每次重传时间不一定相同,一般是指数增长如1,2,4,8
三次握手可以携带数据吗
一二次不可以携带数据。
挥手为什么要四次
因为服务器收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答,SYN报文用来同步。但关闭连接时;当服务端收到FIN报文时,可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的报文我收到了,只有等到我服务端的报文都发送完了,我才能发送FIN报文,因此不能一起发送,要四次挥手”
等待状态
TIME_WAIT状态也称为2MSL等待状态。
每个具体的TCP实现必须选择一个报文段最大生存时间MSL,它是任何报文段被丢弃前在网络的最长时间。这个时间是有限的因为TCP报文段以IP数据报在网络传输而IP数据报则有限制其生存时间TTL字段。对一个具体实现给定的MSL值,当TCP执行一个主动关闭,并发回最后一个ACK,该连接必须在TIME_WAIT状态停留的时间为2倍的MSL这样可以让TCP再次发送最后的ACK以防ACK丢失。
四次挥手释放连接时,等待2MSL的意义
为保证客户端发送最后一个ACK报文段能到达服务器。因为ACK可能丢失数据,从而导致处在LAST-ACK状态的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着服务器重传一次,重新启动后等待着计算器。最后客户端服务器都正常关闭。假设客户端不等待2MSL而是发完ACK直接释放关闭。一但ACK丢失,服务器无法正常进入关闭状态。
两个理由:
保证客户端发送的最后一个ack报文到服务端
防止“失效的连接请求报文段”出现在本连接中\