基础知识
什么是连接
连接就是通信双方开辟所需要的资源,一个连接对应了通信双方各一个Socket,从而保证了链接的唯一性。
网络通信过程
以发送流程为例:
首先应用层将数据写入内核的send queue中,然后交由内核来完成数据传输,传输的过程中会经历多个网络分层,同时会需要多个协议来协助其传输,每个协议的加入都意味着给数据包多进行一次封装,一直到吧数据传递给链路层,在链路层数据会从路由表中一次一次的找到下一个目标节点的MAC地址,从而一步一步的发送到接收方主机,接收方接受到的数据会被存在receive queue 中,同样依靠内核来将数据返回给应用层。
URL和URI
URI是指各种能够唯一表示资源的方式,URL便是用定位的方式表示资源的一种形式
网络分层(TCP/IP体系结构)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fTvlUeEd-1631467315700)(E:/note/%25E6%2588%2591%25E7%259A%2584%25E7%25AC%2594%25E8%25AE%25B0/%25E5%258A%25A0%25E5%25BC%25BA%25E3%2580%2581%25E5%258E%259F%25E7%2590%2586/upload/TCPIP%25E4%25BD%2593%25E7%25B3%25BB%25E7%25BB%2593%25E6%259E%2584.png)]
单播、多播、广播
广播和组播常用于局域网,例如我要给局域网的其他主机发送100份1G的文件,如果使用单播,那么将需要发送端在自己的主机上进行100次的报文复制,但是如果使用多播,那么这件事将由路由器和交换机来做,从而大大降低了当前主机的负载。广播时就是向其255的广播地址发送数据
HTTP
GET和POST
- GET 通过地址传输数据,POST通过请求体传输数据
- GET在地址中传输数据会有长度限制,如果长度超过限制,会返回414错误码。而Post在请求体中传输就不会有该问题
- GET请求在地址中传输的数据只接收部分ASCII码,我们平时之所以能够在GET中数据汉字,是因为浏览器用URL编码对其进行了处理,而POST在请求体中传输数据时就没有数据类型的限制
- GET请求一般用来获取数据,所以请求可以被浏览器缓存,但是POST一般用来处理数据,所以不会缓存
- GET请求被刷新是无害的,而刷新POST默认是非幂等的。
响应码
2XX
200:请求成功
204:响应中不包含主体(适用于客户端给服务端发送信息,且服务端不需要向客户端反馈信息)
206:只请求资源的一部分
3XX
301:永久重定向,例如为了让人们更方便的访问网站,我们申请www.abc.com和abc.com,但是其实资源放在www.abc.com的主机下,我们就可以将来自abc.com的所有请求301到www.abc.com
302:临时重定向,即临时调用另一个请求
4XX
400:请求报问存在语法错误
401:未认证
403:无权访问
404:无资源
405:方法不允许
414 :URI太长
415:不支持附带的媒体格式
5XX
500:服务器内部错误
503:服务不可用,服务器过载
报头
公共头 | |
---|---|
Remote Address | 请求的远程地址 |
Request URL | <