前端面试问题总结之---计算机网络
TCP/IP连接三次握手:
- 第一次握手:客户端发送一个SYN包给服务器,表示请求连接;
- 第二次握手:服务器发送SYN+ACK包给客户端,表示收到你的请求,并同意连接;
- 第三次握手:客户端发送确认包ACK给服务器,表示确认并开始连接。
TCP/IP断开四次挥手:
- 第一次挥手:客户端发送一个FIN包给服务器,表示将要关闭客户端到服务器这个方向的连接;
- 第二次挥手:服务器发送一个ACK包给客户端,表示同意客户端关闭连接的请求,但还没有准备好关闭连接;
- 第三次挥手:服务器发送一个FIN包给客户端,表示将要关闭服务器到客户端这个方向的连接;
- 第四次挥手:客户端发送一个确认包ACK给服务器,表示确认并关闭连接。
为什么TCP建立连接需要三次握手,而断开连接需要四次挥手?
因为当服务器收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务器端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,”你发的FIN报文我收到了”。只有等到服务器端所有的报文都发送完了,服务器才能发送FIN报文,因此不能一起发送,故需要四步握手。
从输入一个URL到浏览器加载整个网页的过程?
- 浏览器通过DNS服务器解析查找URL对应的IP地址;
- 浏览器向服务器发送http请求,建立TCP连接;
- 服务器响应并处理http请求,返回相应的文件;
- 浏览器开始处理数据信息,并渲染页面,显示出来。
TCP/IP 五层模型中对应的协议有哪些?
- 应用层:HTTP(超文本传输协议)、FTP(文件传送协议)、SMTP(简单邮件传送协议)
- 运输层:TCP(传输控制协议)、UDP(用户数据报协议)
- 网络层:IP(网际协议)、ICMP(网际控制报文协议)
- 数据链路层:PPP(点对点协议)、CSMA/CD(载波监听多点接入/碰撞检测协议)
- 物理层:IEEE802系列(局域网与城域网系列标准协议)
TCP与UDP的区别?
-
TCP是面向连接的协议,UDP是无连接协议;
-
TCP是可靠、有序、无界的,而UDP不可靠、无序、有界;
-
TCP有流量控制(拥塞控制),而UDP 没有;
-
TCP传输速度慢,而UDP传输速度快;
-
TCP是重量级的,UDP是轻量级的,TCP的头部比 UDP大;
-
TCP面向字节流,而UDP面向报文;
-
TCP是点对点连接的,而UDP一对一,一对多,多对多都可以;
-
TCP适合用于网页,邮件等,而UDP适合用于视频,语音广播等。
HTTP中GET与POST的区别?
- GET从指定的资源请求数据,POST向指定的资源提交要被处理的数据;
- GET请求有长度限制,而POST没有;
- GET的安全性较差,而POST比GET更安全
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留;
- GET请求能被缓存、收藏为书签,而POST不能;
- GET请求只能进行url编码,而POST支持多种编码方式
- GET数据在URL中对所有人都是可见的,而POST数据不会显示在URL中;
- GET和POST本质上就是TCP连接,但GET产生一个TCP数据包,而POST产生两个TCP数据包。
HTTP 状态码有哪些?
-
1XX(临时响应):表示临时响应并需要请求者继续执行操作的状态代码;
- 100(继续):请求者应当继续提出请求;
- 101(切换协议):请求者要求服务器切换协议;
- 2XX(成功):表示成功处理了请求的状态代码;
- 201(已创建):请求成功并且服务器创建了新资源;
- 202(已接受):服务器已接受请求,但尚未处理;
- 203(非授权信息):服务器已成功处理了请求,但返回信息可能来自另一来源;
- 204(无内容):服务器成功处理了请求,但没有返回任何内容;
- 205(重置内容):服务器成功处理了请求,但没有返回内容,要求请求者重置内容;
-
3XX(重定向):表示要完成请求,需要进一步操作;
- 300(多种选择):针对请求,服务器可执行多种操作;
- 301(永久移动):请求的网页已永久移动到新位置;
- 302(临时移动):服务器目前从不同的位置的网页响应请求;
- 304(未修改):自从上次请求后,请求的网页未修改过;
- 4XX(请求错误):表示请求可能出错,妨碍了服务器的处理;
- 400(错误请求):服务器不理解请求的语法;
- 401(未授权):请求要求身份验证;
- 403(禁止):服务器禁止请求;
- 404(未找到):服务器找不到请求的网页;
-
5XX(服务器错误):表示服务器在尝试处理请求时发生内部错误;
- 500(服务器内部错误):服务器运到错误,无法完成请求;
- 502(错误网关):服务器作为网关或代理,从上游服务器收到无效响应;
- 503(服务不可用):服务器目前无法使用;
- 504(网关超时):服务器作为网关或代理,但是没有及时从上游服务器收到请求。