做为前端攻城狮你应该知道的计算机网络知识
要想成为一名优秀的前端攻城狮计算机网络知识时必不可少的,计算机网络基础该是程序猿需掌握的知识,在工作中会经常用到,也是面试过程中常常考察的内容。所以就整理了一些相关的知识。
一、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协议以下不足:
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方身份,应此可能遭遇伪装
- 无法证明报文的完整性(即准确性),所以可能已遭篡改
三、HTTP特点
HTTP无状态
无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
无连接
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
HTTP的请求和响应
HTTP请求信息由3部分组成:
- 请求方法(GET/POST)、URI、协议/版本
- 请求头(Request Header):Content-Type、端口号Host、Cookie
- 请求正文:包含客户提交的查询字符串信息
HTTP响应也由3个部分构成:
- 状态行:状态代码及描述 如404、500
- 响应头(Response Header):Content-Type 、Server、Date
- 响应正文:html代码
四、HTTP常见请求方法
五、在浏览器中输入url地址显示主页的过程
具体大家可以参考浏览器输入 URL 后发生了什么?
六、OSI七层模型
- 应用层:文件传输,电子邮件,文件服务,虚拟终端TFTP(69),HTTP(80),FTP(传输20、控制21),SMTP(25),DNS(53),Telnet(23)
- 表示层:数据格式化,代码转换,数据加密
- 会话层:解除或建立与别的接点的联系
- 传输层:提供端对端的接口,TCP,UDP
- 网络层:为数据包选择路由,IP,ICMP,IGMP
- 数据链路层:传输有地址的帧以及错误检测功能,PPP,ARP,RARP
- 物理层:以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2
七、三次握手
ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
SYN:同步序号,用于建立连接过程。
FIN: finish标志,用于释放连接。
- 客户端发送确认序号SYN=1,初始序号seq=X的包,连接的服务器的端口。
- 服务端返回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号设置为x+1。并发送一个自己的序列号 y。
- 客户端发送确认包(ACK) SYN标志位为0,ACK标志位为1,并且把服务器发来的 y ,+1 作为确认号发送给对方,且序列号设置为第二次的确认号x+1。
八、四次挥手
TCP连接是全双工的,因此每个方向都必须单独进行关闭。
- 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送,并发送一个自己的ISN(u)
- 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(u+1)。同时发送一个自己的ISN(v)
- 服务器B关闭与客户端A的连接,发送一个FIN、ACK给客户端A,确认号为收到的序号加1(u+1),与上一次不变。同时发送一个自己的ISN(w)
- 客户端A发送ACK报文确认,并将确认序号设置为收到序号加1(w+1),序列号就是上一次的确认号(u+1)
九、TCP和UDP
- TCP面向连接,UDP无连接。
- TCP面向字节流(文件传输),UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对IP电话,实时视频会议等)。
- TCP首部开销20字节,UDP的首部开销小,只有8个字节。
- TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
- 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
- TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。