http 初步了解(一)

本系列大概分为以下几个部分

  • 1: 了解协议,dns,dhcp,ISP,CDN
  • 2: 了解http 请求体:header,body,response
  • 3: http常见的error code
  • 4: http1.0 与http 2.0的区别;

网络基础

DNS : domain name service:域名解析服务 The DNS is a distributed database which keeps track of computer's names and their corresponding IP addresses on the Internet.dns 就是分布式数据库,记录着电脑名称与ip之间的关系,dns的结构图如同IP寻址层级关系;参考class loader的class关系的查找顺序;具体关系图参考如下:

http 初步了解(一)_第1张图片
image

协议与包: 每个连接到网络中的终端设备都有一个唯一的IP地址;A(1.2.3.4)到B(5.6.7.8)之间的通信,就是将文本信息转化成数据信号,然后通过网络进行传输;然后通过协议栈,将数字信号转换成文本信息;TCP/IP 协议栈展示如下:

协议栈 备注
应用层 主要分为www,电子邮箱,FTP服务器
传输层 tcp包,通过某个端口,像某个具体的应用层提供服务
IP网络层 ip路由通过IP地址,定位到具体的某个电脑
物理链路层 将二进制包转换成网络信号
http 初步了解(一)_第2张图片
image

当终端A (IP地址1.2.3.4)传输数据到终端B(IP 地址:5.6.7.8)的时候,经过哪些过程?

  • 数据从最高的应用层,向下开始解析传输;
  • 如果传输的数据比较长,每一层协议都会将消息打成小的message,即:数据包;因为每一层数据都对于数据长度,都有限制
  • 数据包,先从应用层,然后解析成TCP传输层(大部分应用都会利用该协议,不安全的传输方式),每个包会分配到特定的端口;然后终端B,通过不断接听特定的端口,然后接受到特定的数据;
  • 经过了TCP层处理之后,数据会通过到IP层;通过IP层的,数据包能够解析到目标终端IP(5.6.7.8)
  • 现在我们的消息体有了目标端口以及目标的IP地址 ; 链路层将字符的文本数据转换成数字信息,通过网络开始传输
  • 你本地的终端,通过local ISP直连到外部网络;ISP本地路由,会检验你本地的包,然后确定每个包的网络路由路线;
  • 最终,数据包(chunks message)到达目标IP(5.6.7.8),然后,这个包将从通过协议栈,向上解析数据;
  • 数据到达目标终端的时候;通过每个协议栈的时候,能够增加一些数据(包括source IP,端口号)
  • 当数据到达最高的协议栈的时候,包会被召集起来,组织成数据‘hello computer ,5.6.7.8’

CDN: 地理上分布式proxy servers 以及数据中心;目的为终端用户提供高可用,性能好的服务;内容分发网络 (CDN) 用来加快向最终用户交付 Web 内容的主要技术是边缘缓存,该技术需要将静态文本、图像、音频和视频内容的副本存储在互联网“边界”周围的多个服务器上,这样用户请求就可以得到附近的边界服务器处理,而不是一台遥远的源服务器。

http请求体

常见的请求体:

The following example illustrates a typical message exchange for a GET request (Section 4.3.1 of [RFC7231]) on the URI "http://www.example.com/hello.txt": Client request:

 GET /hello.txt HTTP/1.1
 User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
 Host: www.example.com
 Accept-Language: en, mi

Server response:

 HTTP/1.1 200 OK
 Date: Mon, 27 Jul 2009 12:28:53 GMT
 Server: Apache
 Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
 ETag: "34aa387-d-1568eb00"
 Accept-Ranges: bytes
 Content-Length: 51
 Vary: Accept-Encoding
 Content-Type: text/plain

 Hello World! My payload includes a trailing CRLF.

```

PS

  • HTTP/1.1 →Initially it is RFC 2616 but later replaced by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235. So, we need to read from RFC 7230 to RFC 7235 to implement basic workings of HTTP.
  • HTTP/2 → RFC 7540 and RFC 7541
  • FTP → RFC959

参考文献:

  • 1: how does the internet works ?
  • 2: http 权威指南
  • 3: akamai CDN
  • 4: Hypertext Transfer Protocol -- HTTP/1.1 RFC 2616
  • 5: Hypertext Transfer Protocol Version 2 (HTTP/2)

你可能感兴趣的:(http 初步了解(一))