要想成为一名优秀的前端攻城狮计算机网络知识时必不可少的,计算机网络基础该是程序猿需掌握的知识,在工作中会经常用到,也是面试过程中常常考察的内容。所以就整理了一些相关的知识。

一、HTTP状态码

code status description
200 ok 从客户端发送的请求被服务端正常处理
201 No Content 请求处理成功,但没有资源返回
206 Partial Content 客户端执行了范围请求,服务端成功执行了这部分请求
301 Moved Permanently 永久重定向 表示该资源已经被分配了新的URI,以后使用资源现在指定的URI
302 Found 临时重定向
303 See Other 与301、302相似,当303状态码明确表示客户端应该使用GET方法请求资源。
304 Not Modified 客户端发送附带请求,资源已找到但是没有符合条件请求,比如服务器端资源没有发生变化,可以直接使用客户端的缓存
400 Bad Request 表示客户端请求报文中存在错误代码
401 Unauthorized 表示发送的请求需要有通过HTTP认证
403 Forbidden 表示对请求资源的访问被服务器拒绝了
404 Not Found 服务端无法找到请求的资源
500 Inter Server Error 服务器端在执行请求时发生错误
503 Service Unavailable 表示服务器暂时处于超负荷或者停机维修

二、HTTP和HTTPS

HTTP协议时超文本传输协议。HTTPS是安全的超文本传输协议,是安全版的HTTP协议,使用安全套接字层(SSL)进行信息交换。HTTP+加密+认证+完整性保护=HTTPS。HTTPS采用对称加密、SSL位于应用层于传输层TCP之间,原本数据由应用层直接交由传输层处理,现在会经过SSL加密再进行传输。

HTTPS协议主要针对解决HTTP协议以下不足:

  1. 通信使用明文(不加密),内容可能会被窃听
  2. 不验证通信方身份,应此可能遭遇伪装
  3. 无法证明报文的完整性(即准确性),所以可能已遭篡改

三、HTTP特点

HTTP无状态

无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

无连接

无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

HTTP的请求和响应

HTTP请求信息由3部分组成:

  1. 请求方法(GET/POST)、URI、协议/版本
  2. 请求头(Request Header):Content-Type、端口号Host、Cookie
  3. 请求正文:包含客户提交的查询字符串信息

HTTP响应也由3个部分构成:

  1. 状态行:状态代码及描述 如404、500
  2. 响应头(Response Header):Content-Type 、Server、Date
  3. 响应正文:html代码

四、HTTP常见请求方法

参考: HTTP协议以及HTTP请求中8种请求方法

五、在浏览器中输入url地址显示主页的过程

具体大家可以参考浏览器输入 URL 后发生了什么?

六、OSI七层模型

  1. 应用层:文件传输,电子邮件,文件服务,虚拟终端TFTP(69),HTTP(80),FTP(传输20、控制21),SMTP(25),DNS(53),Telnet(23)
  2. 表示层:数据格式化,代码转换,数据加密
  3. 会话层:解除或建立与别的接点的联系
  4. 传输层:提供端对端的接口,TCP,UDP
  5. 网络层:为数据包选择路由,IP,ICMP,IGMP
  6. 数据链路层:传输有地址的帧以及错误检测功能,PPP,ARP,RARP
  7. 物理层:以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2

七、三次握手

ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

SYN:同步序号,用于建立连接过程。

FIN: finish标志,用于释放连接。

  1. 客户端发送确认序号SYN=1,初始序号seq=X的包,连接的服务器的端口。
  2. 服务端返回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号设置为x+1。并发送一个自己的序列号 y。
  3. 客户端发送确认包(ACK) SYN标志位为0,ACK标志位为1,并且把服务器发来的 y ,+1 作为确认号发送给对方,且序列号设置为第二次的确认号x+1。

八、四次挥手

TCP连接是全双工的,因此每个方向都必须单独进行关闭。

  1. 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送,并发送一个自己的ISN(u)
  2. 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(u+1)。同时发送一个自己的ISN(v)
  3. 服务器B关闭与客户端A的连接,发送一个FIN、ACK给客户端A,确认号为收到的序号加1(u+1),与上一次不变。同时发送一个自己的ISN(w)
  4. 客户端A发送ACK报文确认,并将确认序号设置为收到序号加1(w+1),序列号就是上一次的确认号(u+1)

九、TCP和UDP

  1. TCP面向连接,UDP无连接。
  2. TCP面向字节流(文件传输),UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对IP电话,实时视频会议等)。
  3. TCP首部开销20字节,UDP的首部开销小,只有8个字节。
  4. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
  5. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
  6. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。