计算机网络知识

459 阅读6分钟

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

一、HTTP状态码

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