面试准备-计算机网络篇

    整理一下计算机网络篇会问到的一些知识点,学习过程中如有错误,欢迎私聊我纠正。

面试准备–计算机网络篇

数据链路层的功能

数据链路层在TCP/IP模型和OSI模型中的第二层,具体功能:差错控制、路由选择、自动协商。
1.封装成帧:就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
2.透明传输
3.差错检测

计算机之间的通信方式?

网段号: 我们知道ip由两部分构成 网段号+主机号。当我们使用自身的子网掩码和目的主机进行&运算时,我们就能得出目的主机的网段号,进而判断目的主机与自己是否处在同一个网络中。
ARP: 将已知的ip地址解析为对应的mac地址。
不同网段的通信:
(1)判断是否在同一个网段;
(2)查找路由表;
(3)发现网关的mac地址;
(4)发送ping包给网关;
(5)网关接收以太网帧;
(6)网关路由转发:网关ip层查看这个ping包,去路由表里尝试能否匹配到接收方的ip,查看默认网关的路由表信息,匹配接收方的网段号,到达下一条的方式是广播,所以网关开始发送ARP广播,并得到了接收方的mac地址,于是网关将这个ping包发送给了接收方。
(7)ping包弹回;
(8)ping程序打印输出;

计算机如何访问Internet:
(1)域名解析:通过dns服务器,使我们能获取到域名背后的ip地址。
(2)打包http报文;
(3)http触发TCP进程三次握手连接;
(4)TCP传输HTTP;
(5)服务器回传自身网页:tcp的可靠传输机制就是己方发送数据,对方发送确认;
(6)释放TCP连接(四次挥手);

计算机网络TCP和UDP区别,滑动窗口有了解吗?

TCP:有连接,可靠的传输,无差错。 三次握手和四次挥手
UDP:无连接,适用于实时的传输通信(如视频,语音通话),不可靠 可能会丢帧,不需要建立连接和释放连接。
滑动窗口协议:为了保证TCP数据的传输效率,需要一次性尽可能多的传送数据,但数据一次发送太多出错的可能性也大,因此TCP通过一套机制来动态调整每次数据的发送量。
维持发送方/接收方缓冲区;缓冲区是用来解决网络之间数据不可靠的问题,例如丢包,重复包,出错,乱序;在TCP协议中,发送方和接受方通过各自维护自己的缓冲区。通过商定包的重传机制等一系列操作,来解决不可靠的问题。

get和post的区别

GET 用于获取信息,是无副作用的,是幂等(多次请求效果相同)的,且可缓存
POST 用于修改服务器上的数据,有副作用,非幂等,不可缓存
GET 和 POST 报文上的区别:
GET是把参数包含在URL中,POST通过request body传递参数
报文格式上,不带参数时,最大区别就是第一行方法名不同:POST 方法请求报文第一行是这样的 POST /uri HTTP/1.1 \r\n;GET 方法请求报文第一行是这样的 GET /uri HTTP/1.1 \r\n;
GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET参数通过URL传递,POST放在Request body中。

http和https的区别

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

DNS劫持和HTTP劫持有什么区别?

DNS劫持:在DNS服务器中,将www.**.com的域名对应的IP地址进行了变化。你解析出来的域名对应的IP,在劫持前后不一样。
HTTP劫持:你DNS解析的域名的IP地址不变。在和网站交互过程中的劫持了你的请求。在网站发给你信息前就给你返回了请求。
HTTP劫持是你去医院的时候,有人半途上车给你塞小广告
你DNS解析的域名的IP地址不变。在和网站交互过程中的劫持了你的请求。在网站发给你信息前就给你返回了请求。

请求与响应内容包括哪些部分?

请求:
第一部分:请求行,第一行明了是post请求,以及http1.1版本。
第二部分:请求头部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:请求数据,第八行。
响应:
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
第二部分:消息报头,用来说明客户端要使用的一些附加信息

cookie和session

很容易看出来最明显的不同是一个在客户端一个在服务端。因为Cookie存在客户端所以用户可以看见,所以也可以编辑伪造,不是十分安全;
Session过多的时候会消耗服务器资源,所以大型网站会有专门的Session服务器,而Cookie存在客户端所以没什么问题;
域的支持范围不一样,比方说a.com的Cookie在a.com下都能用,而www.a.com的Session在api.a.com下都不能用;

为什么是三次握手而不是二次或者四次握手

答案:为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误;

总结

坚持原创技术分享,您的支持将鼓励我继续创作!