- TCP/IP
- HTTP
- 浏览器打开一个网页的过程
- 从(浏览器缓存、操作系统缓存、硬盘host文件)查找DNS;
- 解析DNS,获得目标IP;
- 根据IP,建立TCP连接(三次握手);
- 浏览器向服务器发起HTTP请求;
- 服务器处理HTTP请求(响应);
- (如果没有后续请求)断开TCP连接(四次挥手)。
TCP/IP
1. TCP与UDP的区别
- TCP需要建立连接;
UDP不需要。 - TCP开销大,速度慢,传输可靠;
UDP开销小,速度快,传输不可靠。 - TPC面向数据流;
UDP面向数据报。
2. TCP连接的建立与断开
建立连接:三次握手;
断开连接:四次挥手。
3. 三次握手的过程(通俗版)
- 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,主机A告诉主机B 两件事:
我想要和你通信;你可以用哪个序列号作为起始数据段来回应我。- 主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:
我已经收到你的请求了,你可以传输数据了;你要用哪个序列号作为起始数据段来回应我。- 主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:
我已收到回复,我现在要开始传输实际数据了。
这样3次握手就完成了,主机A和主机B 就可以传输数据了.
4. 为什么要三次握手?为什么不是两次?
为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
5. 四次挥手的过程
- 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求;
数据发完毕,但还可接收数据,请求断开连接- 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1;
请求收到,同意断开,不再接收你的数据,但还可以继续给你发数据- 由B端再提出反方向的关闭请求,将FIN置1;
我也没有数据要发给你啦- 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束。
我也不再接收数据,连接断开
6. 为什么要四次挥手?
因为没有数据要发送了,不代表没有数据要接收了。可能还有没有接收完成的数据。
HTTP
1. HTTP的特点是什么?
无状态、无连接。
构建与TCP/IP之上。
(客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。)
2. HTTP有哪些类型?
请求、响应。
3. HTTP请求
HTTP请求常用方法
GET,POST,PUT, DELETE。
(查询,修改,增添,删除)
HTTP请求组成?
状态行、请求头、请求正文
GET报文:
- 状态行:
GET /books... HTTP/1.1
- 请求方式:
GET
- 路径:
/books...
- 协议:
HTTP/1.1
- 请求方式:
- 请求头:
- 主机名:
Host
- 代理信息:
User-Agent
- 连接状态:
Connection
- 主机名:
- 请求正文:
- 空(GET请求的正文一般为空,因为它的参数放在URL中)
POST请求
- 状态行:
POST HTTP/1.1
- 请求方式:
POST
- 协议:
HTTP/1.1
- 请求方式:
- 请求头:
- 主机名:
Host
- 代理信息:
User-Agent
- 内容类型:
Content-Type
- 内容长度:
Content-Length
- 连接状态:
Connection
- 主机名:
- 请求正文:
sex=man&name=Professional
GET与POST的区别
- 参数位置不同
GET参数在URL中;
POST参数在正文中。 - 受URL长度限制,GET参数数量有限;
- GET不安全;
POST安全。 - GET可以被缓存,可以被收藏为书签;
POST可以被缓存,不可以被收藏为书签。
4. 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的区别?
- (讲一下Cookie怎样做、Session怎样做)
- Session的实现依赖于Cookie,如果Cookie被禁用,那么session也将失效。