第五章 计算机网络
这块儿有可能也会问到
一,OSI网络七层模型和tcp/ip四层模型(常以笔试形式考察)
①OSI中的上面4层(应用层、表示层、会话层、传输层)为高层,定义了程序的功能;
下面3层(网络层、数据链路层、物理层)为底层,主要是处理面向网络端到端的数据流。
②四层模型 tcp/ip这个协议遵守一个四层的模型概念:应用层、传输层、互联层和网络接口层。

二,TCP和UDP协议区别
这俩是传输层的两个协议,他们之间的主要区别是:
1,TCP是面向连接的 ,类似于打电话要先拨号一样的,而udp是面向无连接的,在发送数据之前呢是不需要建立连接的,所以TCP的传送速度要慢
2,TCP是一对一连接的,可靠的协议,保证传输数据的完整性正确性,不丢包不重复,而且是有序的,但是udp就是不可靠的,它只要交付就可以了,不会去保证数据是否正确到达
3,安全性,TCP的安全性比udp要低,漏洞比较多,容易受到攻击
应用:
TCP的使用场景主要是我们平时登录QQ,传文件,发邮件这样的场景
而udp的实时性比较高,所以我们用的微信视频通话这样的场景
三,TCP协议可靠的原因
①超时重传 发送数据时设置一个重传定时器,来监测数据丢失状态,如果说时间已经到了,但还没有收到数据,就判定这个数据包已经丢失
②流量控制 滑动窗口协议
③拥塞控制 有四个核心算法,慢启动,拥塞避免,快速重传,快速恢复
四,TCP协议三次握手,四次挥手
三次握手的原因是 让客户端和服务端都知道对方具备收和发的能力
clientA ---syn---> clientB //clientB 此时已经知道了clientA具备发送的能力 clientA <----syn-----clientB //clientA 此时已经知道clientB具备收和发的能力 但是此时clientB还不知道clientA是否具备收的能力
clientA ----ack----> clientB //B收到了syn 知道了A具备收的能力
四次挥手的原因:
clientA ---fin---> clientB //clientA 给B发送关闭连接
clientA <----fin-----clientB //clientB 告诉对方自己可以关闭了,但是在关闭之 前要把自己发送队列的数据给对端发了
clientA <----ack----- clientB //自己发送队列数据给对端发完,给对端说可以关了 clientA ----ack------> clientB //结束挥手
至于原因:让tcp关闭连接可以保证自己可靠的关闭连接
五,HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,安全性差,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
六,HTTP超文本传输协议构成(明文传输,不加密)
http协议的内容分为:请求和响应
HTTP的请求行结构:请求方式+请求地址(url)+请求协议(http)
HTTP的响应行结构:响应协议+响应码+响应信息
HTTP请求中断的原因:
网络拥堵,网络断了或者请求超时,浏览器或者服务器出现问题
请求 包括请求行、请求头、请求正文。
请求行的组成:请求方式、url字段、http版本。
常见的请求方式有:post、get、put、delete、trace、connect、options。
url字段的组成:http://ip地址或域名(www.baid.com)【:端口,是8080就可以省略】/路径?参数1=值1&参数2=值2
请求头:请求头部通知服务器有关于客户端请求的信息。常用的请求头有:User-Agent:产生请求的浏览器类型,Accept:客户端可识别的内容类型列表,Content-Type:请求体的MIME类型。
请求正文:get请求没有请求正文,post请求有请求正文,请求正文类型比较丰富,大小也是由当前的数据决定的。
响应 包括响应行、响应头、响应正文。
响应行的组成:响应信息、响应状态码、http版本。
响应信息:如:OK、Found
响应状态码:
1xx:通知信息,请求被接收需要进行下一步处理;
2xx:请求被成功处理,例如:200;
3xx:请求被重定向;301为永久重定向,302为临时重定向
4xx:客户端请求错误;400:其含义是你访问的页面域名不存在或者请求错误,403:请求被禁止,404:服务器无法找到客户端请求的资源
5xx:服务器错误;500:服务器内部错误
响应头:响应头用于服务器向客户端描述服务器的基本信息,以及数据的描述:例如浏览器类型等
响应正文:类型比较丰富,有图片、文本、视频等
七,常见状态码
200 OK:请求成功,服务器正常处理请求,并返回请求的资源。
201 Created:请求成功,服务器已经成功创建了新的资源,并将其URI返回给客户端。
204 No Content:请求成功,服务器已经成功处理了请求,但没有返回任何实体内容。
301 Moved Permanently:请求的资源已经被永久移动到新的URI,客户端需要更新URI并重新发送请求。
302 Found:请求的资源已经临时移动到新的URI,客户端需要更新URI并重新发送请求。
304 Not Modified:请求的资源没有修改,客户端可以直接使用本地缓存的版本。
400 Bad Request:请求有误,服务器无法处理该请求。
401 Unauthorized:请求需要身份验证,客户端需要提供有效的身份认证信息。
403 Forbidden:请求被服务器拒绝,客户端没有权限访问该资源。
500 Internal Server Error:服务器内部错误,无法完成请求。
503 Service Unavailable:服务器暂时无法处理请求,通常是由于服务器过载或维护等原因。
八,GET 和 POST区别
get是获取数据的,而post是提交数据的, 用于修改服务器上的数据,有副作用
GET不如POST安全,虽然两者都可以是明文,因为POST用body传输数据,而GET用url传输,更加容易看到
GET 能直接在历史记录中看到,能被缓存,而 POST 不可缓存,有历史记录就会有很多安全隐患
GET 幂等的,多次点击是不会产生副作用的,而post是非幂等的
九,cookie,seeion,token对比:
cookie 举例:服务器看你的身份证,然后给你一个编号,以后进行任何操作,都出示编号后服务员去看服务器上的身份证库查你是谁。
token 举例:我发给你一张加密的身份证,以后你只要出示这张卡片,我就知道你一定是自己人。
seeion举例: 我发给你一张身份证,但只是一张写着身份证号码的纸片。你每次来办事,我去后台查一下你的 id 是不是有效。
说下区别特点:
cookie与session的其他不同之处:
1、存储位置不同
cookie的数据信息存放在客户端浏览器上。
session的数据信息存放在服务器上。
2、存储容量不同
单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie。
对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制。
3、存储方式不同
cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据。
session中能够存储任何类型的数据,包括且不限于string,integer,list,map等。
4、隐私策略不同
cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的。
session存储在服务器上,对客户端是透明的,不存在敏感信息泄漏的风险。
5、有效期上不同
开发可以通过设置cookie的属性,达到使cookie长期有效的效果。
session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。
6、服务器压力不同
cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择。
session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。
7、浏览器支持不同
假如客户端浏览器不支持cookie:
cookie是需要客户端浏览器支持的,假如客户端禁用了cookie,或者不支持cookie,则会话跟踪会失效。关于WAP上的应用,常规的cookie就派不上用场了。
运用session需要使用URL地址重写的方式。一切用到session程序的URL都要进行URL地址重写,否则session会话跟踪还会失效。
假如客户端支持cookie:
cookie既能够设为本浏览器窗口以及子窗口内有效,也能够设为一切窗口内有效。
session只能在本窗口以及子窗口内有效。
8、跨域支持上不同
cookie支持跨域名访问。
session不支持跨域名访问。
cookie和token的区别
cookie:登陆后,后端生成一个sessionid放在cookie中返回给客户端,并且服务端一直记录着这个sessionid,客户端以后每次请求都会带上这个sessionid,服务端通过这个sessionid来验证身份之类的操作。所以别人拿到了cookie等于拿到了sessionid,就可以完全替代你。
token:登陆后,后端会返回一个token给客户端,客户端将这个token存储起来,然后每次客户端请求都需要开发者手动将token放在header中带过去,服务端每次只需要对这个token进行验证就能使用token中的信息来进行下一步操作了。
十,在浏览器输入一个url,然后进行搜索,这个页面展示流程是怎么工作的
第一步 DNS域名解析协议,把域名地址解析为IP地址
第二步 TCP连接,进行三次握手
第三步 客户端发送HTTP请求到服务器端
第四步 服务器端处理请求,返回HTTP报文
第五步 浏览器接收返回HTTP报文,进行渲染展示
第六步 断开连接 进行四次挥手
十一,上网的时候非常卡,加载很慢
第一,是不是网速太慢了,带宽不足,硬件配置太低,内存被占满
第二,网页的js脚本太大,阻塞了页面的加载
第三,HTTP请求次数太多,或者网页上资源太多,有文档有视频
第四,接收数据的时间比较长,加载某个资源比较慢
第五,DNS 域名解析协议解析的速度比较慢