美文网首页
计算机网络面试常问基础总结

计算机网络面试常问基础总结

作者: ZYJ2016 | 来源:发表于2017-10-28 10:57 被阅读0次
  • TCP/IP
  • HTTP
  • 浏览器打开一个网页的过程
    • 从(浏览器缓存、操作系统缓存、硬盘host文件)查找DNS;
    • 解析DNS,获得目标IP;
    • 根据IP,建立TCP连接(三次握手);
    • 浏览器向服务器发起HTTP请求;
    • 服务器处理HTTP请求(响应);
    • (如果没有后续请求)断开TCP连接(四次挥手)。

TCP/IP

1. TCP与UDP的区别

  1. TCP需要建立连接;
    UDP不需要。
  2. TCP开销大,速度慢,传输可靠;
    UDP开销小,速度快,传输不可靠。
  3. TPC面向数据流;
    UDP面向数据报。

2. TCP连接的建立与断开

建立连接:三次握手;
断开连接:四次挥手。

3. 三次握手的过程(通俗版)

  1. 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,主机A告诉主机B 两件事:
    我想要和你通信;你可以用哪个序列号作为起始数据段来回应我。
  2. 主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:
    我已经收到你的请求了,你可以传输数据了;你要用哪个序列号作为起始数据段来回应我。
  3. 主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:
    我已收到回复,我现在要开始传输实际数据了。

这样3次握手就完成了,主机A和主机B 就可以传输数据了.

4. 为什么要三次握手?为什么不是两次?

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

5. 四次挥手的过程

  1. 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求;
    数据发完毕,但还可接收数据,请求断开连接
  2. 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1;
    请求收到,同意断开,不再接收你的数据,但还可以继续给你发数据
  3. 由B端再提出反方向的关闭请求,将FIN置1;
    我也没有数据要发给你啦
  4. 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束。
    我也不再接收数据,连接断开

6. 为什么要四次挥手?

因为没有数据要发送了,不代表没有数据要接收了。可能还有没有接收完成的数据。


HTTP

1. HTTP的特点是什么?

无状态、无连接。
构建与TCP/IP之上。

(客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。)

2. HTTP有哪些类型?

请求、响应。

3. HTTP请求

HTTP请求常用方法

GET,POST,PUT, DELETE。
(查询,修改,增添,删除)

HTTP请求组成?

状态行、请求头、请求正文

GET报文:

GET报文实例
  • 状态行:GET /books... HTTP/1.1
    • 请求方式:GET
    • 路径:/books...
    • 协议:HTTP/1.1
  • 请求头:
    • 主机名:Host
    • 代理信息:User-Agent
    • 连接状态:Connection
  • 请求正文:
    • 空(GET请求的正文一般为空,因为它的参数放在URL中)

POST请求

POST请求实例
  • 状态行:POST HTTP/1.1
    • 请求方式:POST
    • 协议:HTTP/1.1
  • 请求头:
    • 主机名:Host
    • 代理信息:User-Agent
    • 内容类型:Content-Type
    • 内容长度:Content-Length
    • 连接状态:Connection
  • 请求正文:sex=man&name=Professional

GET与POST的区别

  1. 参数位置不同
    GET参数在URL中;
    POST参数在正文中。
  2. 受URL长度限制,GET参数数量有限;
  3. GET不安全;
    POST安全。
  4. GET可以被缓存,可以被收藏为书签;
    POST可以被缓存,不可以被收藏为书签。

4. HTTP响应

HTTP响应的组成?

状态行、响应头、响应正文

HTTP响应实例

XXX状态码的含义?

1xx : 表示请求已经接受了,继续处理。
2xx : 表示请求已经处理掉了。
3xx : 重定向。
4xx : 一般表示客户端有错误,请求无法实现。
5xx : 一般为服务器端的错误。

(状态行中包含一个状态码,用来表示服务器对客户端响应的结果。)

常见的状态码(记得就记得,不记得就说12345分别是什么)
200 OK 客户端请求成功。
301 Moved Permanently 请求永久重定向。
302 Moved Temporarily 请求临时重定向。
304 Not Modified 文件未修改,可以直接使用缓存的文件。
400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized 请求未经授权,无法访问。
403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因。
404 Not Found 请求的资源不存在,比如输入了错误的URL。
500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。
503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。

5. 会话追踪

(HTTP 协议是”无状态”的协议,它不能保存客户的信息,即一次响应完成之后连接就断开了,下一次的请求需要重新连接,这样就需要判断是否是同一个用户,所以才有会话跟踪技术来实现这种要求。)

实现会话追踪的方法?

URL重写、隐藏表单域、Cookie、Session

URL 重写:URL 重写技术就是在 URL 结尾添加一个附加数据以标识该会话,把会话 ID 通过 URL 的信息传递过去,以便在服务器进行识别不同的用户。
隐藏表单域:将会话ID添加到HTML表单元素中提交到服务器,此表单元素并不在客户端显示。
Cookie:Cookie 是 Web 服务器发送给客户端的一小段信息,客户端请求时可以读取该信息发送给服务器端,进而进行用户的识别,对于客户端的每次请求,服务器都会将 Cookie 发送到客户端,客户端保存下来,以便下次使用。
Session:在服务器端会创建一个 session 对象,产生一个 sessionID 来标识这个 session 对象,然后将这个 sessionID 放入到 Cookie 中发送到客户端,下一次访问时,sessionID 会发送到服务器,在服务器端进行识别不同的用户。

Cookie与Session的区别?

  1. (讲一下Cookie怎样做、Session怎样做)
  2. Session的实现依赖于Cookie,如果Cookie被禁用,那么session也将失效。

相关文章

  • 计算机网络面试常问基础总结

    TCP/IP HTTP 浏览器打开一个网页的过程从(浏览器缓存、操作系统缓存、硬盘host文件)查找DNS;解析D...

  • JVM面试常问基础总结

    JVM内存模型 JVM垃圾回收 1. JVM内存模型 线程隔离的三个区:程序计数器:当前线程所执行的行号指示器,指...

  • 开发框架面试常问基础总结

    三层框架 MVC SSM IOC与DI AOP 为什么要使用框架?(常问) 降低耦合度,提高代码复用率,提高开发效...

  • 计算机网络

    TCP 的那些事儿(上) TCP 的那些事儿(下) 计算机网络之面试常考 Carson_Ho总结

  • android常问面试总结

    android面试重点: 1.app启动流程 2.Handler机制 3.Binder机制 4.线程 5.事件分发...

  • 多线程并发面试常问基础总结

    1. 线程与进程的区别? 线程是CPU调度和分派的基本单位;进程是系统调度和分配资源的基本单位; 2. 实现多进程...

  • 连肝7个晚上,总结了计算机网络的知识点!(共66条)

    前言 计算机网络知识,是面试常考的内容,在实际工作中也常常会涉及到。 最近总结了66条计算机网络相关的知识点,大家...

  • 面试常问C++基础

    有关语言基础: c/c++程序的编译过程(GCC的编译流程) 强类型语言 VS 弱类型语言 数组和指针的区别 字符...

  • 面试常问的问题总结

    1、我们为什么要雇请你呢? 有的面试只有这么一个问题。 2、你认为自己最大的弱点是什么? 绝对不要自作聪明地回答"...

  • 面试常问

    跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的...

网友评论

      本文标题:计算机网络面试常问基础总结

      本文链接:https://www.haomeiwen.com/subject/gygdpxtx.html