分层结构
OSI:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 路由器作用于物理层、数据链路层、网络层。主要功能是建立路由表,然后根据表项进行数据包的转发 TCP/IP 四层结构:网络接口层、网际层、传输层、应用层 最经典的五层参考模型:物理层、数据链路层、网络层、传输层、应用层 参考资料
TCP/UDP 区别
特点 | TCP | UDP |
---|
是否面向连接 | 面向连接 | 面向无连接 | 是否可靠服务 | 可靠服务 | 无法保证可靠 | 传输速度 | 传输慢 | 传输快 | 报文格式 | 面向字节流 | 面向报文 | 适用场景 | 网页、邮件 | 语音广播 |
TCP的三次握手,四次挥手
思路: TCP需要保证可靠性,因此三次握手的目的就是同步连接双方的序列号和确认号并交换TCP窗口大小信息。 TCP三次握手 : 两次不够,四次多余
- 第一次握手(SYN=1,seq=x) 发送完毕之后客户端进入SYN_END状态
- 第二次握手(SYN=1,ACK=1,seq=y,ACKnum=x+1),发送完毕之后,服务器端就进入了SYN_RCV状态,同步码状态结束
- 第三次握手(ACK=1,ACKnum=y+1),发送完毕之后,客户端就进入了建立连接的状态,服务器端也在收到包之后进入了建立连接的状态
TCP四次挥手:
- 第一次挥手(FIN=1,seq=u),发送完毕之后,客户端FIN_WAIT_1状态。
- 第二次挥手(ACK=1,ack=u+1,seq=v), 发送完毕之后,服务器端进入CLOSE_WAIT状态,客户端接收到之后进入FIN_WAIT_2状态。
- 第三次挥手(FIN=1,ACK=1,seq=w,ack=u+1),发送完毕之后,服务器端进入LAST_ACK状态,等待来自客户端的最后一个ACK。
- 第四次挥手(ACK=1,seq=u+1,ack=w+1),客户端接收来自服务器的关闭请求,发送一个确认包,并且进入TIME_WAIT状态,等待了某个固定时间(两个最大段生命周期,2MSL,2Maximum Segmentation Lifetime)之后,没有接收到服务器的ACK,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入CLOSE状态。服务器端接收到这个确认包之后,关闭连接,进入CLOSED状态。
最后为什么要等待两个最大段周期? 为了保证客户端最后一个ACK能到达服务端 防止失效的连接出现在本连接中。
HTTP/HTTPS 区别、无状态、长连接、短链接
思路 这道题实际上考察的知识点是HTTP与HTTPS的区别,这个知识点非常重要,可以从安全性、数据是否加密。默认端口等这几个方面去回答哈,其实,当你理解HTTPS的整个流程,就可以很好的回答这个问题。 参考答案: HTTP,也就是超文本传输协议,是一个基于TCP/IP通信协议来传递明文数据的协议。HTTP会存在这几个问题:
- 请求信息是明文传输,容易被窃听截取
- 没有验证对方身份,存在被冒充的风险
- 数据完整性未校验,容易被中间人篡改
HTTPS就是为了解决HTTP出现的问题的 HTTPS=HTTP+SSL/TLS 可以理解为HTTPS就是身上穿着SSL 也就是 Secure Socket Layer 安全套接字的HTTP 他们的主要区别如下:
特点 | Http | Https |
---|
安全性 | 不安全 | 安全 | 默认端口 | 80 | 443 | 资源消耗 | 较少 | 消耗资源较多 | 是否需要证书 | 不需要 | 需要 | 报文是否需要加密 | 明文 | 密文 |
如何理解Http是无状态的?
无状态就是同一个浏览器的请求,服务器不会去记住,因此每一次相应的结果都一样。服务器不会记住你是谁,所以说是无状态协议。
长连接,短链接
- 1.HTTP分为长连接和短链接,本质上说的是TCP的长短连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才具有长连接、短连接的说法。
- 2.TCP长连接可以复用一个TCP连接,来发起多次的HTTP请求,这样就可以减少资源的消耗,比如请求一次HTML,如果是短连接的话,可能后续还需要请求JS/CSS
- 3.HTTP1.0默认是短连接,每次请求都需要建立一个TCP连接,它可以设置Connection:keep-alive 这个字段来强行开启长连接。
状态码
思路: 这个面试题主要考察候选人,是否掌握HTTP状态码这个基础知识点。 日常生活中我们还需要知道开发中几个常见状态码的含义
cookie和Session
首先要了解session和cookie的概念:
- Cookie是保存在客户端的一小块文本串的数据。客户端向服务器发起请求时,服务端会向客户端发送一个Cookie,客户端就把Cookie保存起来。在客户端下次向同一服务器再次发请求的时候,Cookie被携带发送到服务器。服务器就是根据这个Cookie来确定身份的。
- Session 指的是 服务器和客户端一次会话的过程。Session利用Cookie进行信息处理的,当用户首先进行了请求后,服务器就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味这个Cookie就过期了。
主要区别: - 用户第一次请求服务器时,服务器根据用户提交的信息,创建对应的Session,请求返回时将此Session的唯一标识信息SessionID返回给浏览器,浏览器接收到服务器返回的SessionID信息后,会将此信息存入Cookie中,同时Cookie记录此SessionID是属于哪个域名。
- 当用户第二次访问服务器时,请求会自动判断此域名下是否存在Cookie信息,如果存在,则自动将Cookie信息也发送给服务端,服务端会从Cookie中获取SessionID,再根据 SessionID查找对应的 Session信息,如果没有找到,说明用户没有登录或者登录失效,如果找到Session证明用户已经登录可执行后面操作。
URI和URL
- URI,全称是Uniform Resource Identifier ,中文翻译是统一资源标识符,主要作用是唯一的标识一个资源
- URL 全称是Uniform Resource Location 中文翻译是统一资源定位符,主要是提供资源的路径
- URI 更像是一个身份证 URL 更像是一个住址
|