前端所涉及到的网络知识
0 两个小知识点
<meta>提供了有关页面的元信息,比如针对搜索引擎和更新频率的描述和关键词。
Linux top 是Linux 下常用的性能分析工具,能实时显示系统中各个进程的资源占用情况,用途是看哪些进程最耗CPU资源,占用的内存最多。
top -P 按%CPU使用率排行,根据CPU使用百分比的的大小进行排序
-T 切换显示进程和CPU状态信息
-M 按进程占CPU小大进行排序
1. Http 请求报文
第一部分请求行:请求方法| 空格 | url | 空格| 协议版本| 空格| 换行符
第二部分请求头:头部字段名 | :| 值| 回车符| 换行符|
······
头部字段名 | :| 值| 回车符| 换行符|
回车符|换行符
第三部分请求数据:| |
由http 的报文字段不难理解 CRLF 攻击,即 回车符,换行符攻击。因为http 报文中包含大量的回车符,换行符,当向 该报文中注入 回车符,换行符时非常容易就改变了http的报文结构,导致无法解析。
1.1 Get & Post
GET的语义是请求获取指定的资源。GET方法是安全、幂等、可缓存的(除非有 Cache-ControlHeader的约束),GET方法的报文主体没有任何语义。
POST的语义是根据请求负荷(报文主体)对指定的资源做出处理,具体的处理方式视资源类型而不同。POST不安全,不幂等,(大部分实现)不可缓存。
幂等是指同一个请求方法执行多次和仅执行一次的效果完全相同。
GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
GET书签可收藏,POST为书签不可收藏。
GET能被缓存,POST不能缓存 。
GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。
GET对数据长度有限制,当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。POST无限制。
GET只允许 ASCII 字符。POST没有限制。也允许二进制数据。
与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET !POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
GET的数据在 URL 中对所有人都是可见的。POST的数据不会显示在 URL 中。
1.2 请求头
请求头通知服务器有关客户端请求的信息,由键:值对组成。
User-Agent:产生请求的浏览器
Host:请求主机名
Accept:客户端可识别的内容类型
Connection:Keep-alive 维持连接
Referer:请求的URL从哪里获得。
1.3 请求数据
Post方法会携带请求数据。
2.Http 响应报文
http 响应报文由 状态行 消息报头 响应正文 三部分组成
2.1 状态行
Http-version Status-Code Reason-Phrase CRLF
即http 协议版本 ,响应状态码,状态码文本描述,回车换行
2.1.1 响应状态码
常见的有:
200 OK :请求成功
400 Bad Request :客户端请求有语法错误
401 Unauthorized :请求未经授权,这个状态码和www-Authenticate报头域一起使用
403 Forbidden:服务器收到请求,但拒绝提供服务
500 Internal Error : 服务器发生了不可预期的错误
503 Server Unavailable :服务器当前不能处理客户端的请求,一段时间可能恢复正常。
3 网络协议
应用层 ------ 文件传输,电子邮件 包括: HTTP(s) TFTP FTP SMTP DNS
表示层 ------ 数据格式化,加密
会话层 ------ 建立会话,解除会话
传输层 -------- 提供端到端接口,TCP,UDP
网络层 -------- 为数据包选择路由,包括 :IP ICMP BGP IGMP
数据链路层 ------ 传输有地址的帧以及错误检测功能
物理层 ----- 以二进制的形式在物理媒体上传输数据
数据从应用层传下来会在每一层都加上头部信息,进行封装,然后再发送到数据接收端。
3.1 TCP & UDP
TCP 是一个面向连接的可靠的,基于字节流传输控制协议。UDP是一种简单的面向数据报的传输层协议。
TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。
TCP 通过三次握手建立连接,四次分手释放连接保证了通信的可靠性,并且会对传输后的字节流排序,提供了流量控制和拥塞控制等机制来保证可靠性和有序性。但是TCP的传输效率比UDP低,并且报文头部开销大于UDP。