美文网首页
http 初步了解(一)

http 初步了解(一)

作者: 卫渐行 | 来源:发表于2019-04-21 22:52 被阅读0次

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

  • 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关系的查找顺序;具体关系图参考如下:

image

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

协议栈 备注
应用层 主要分为www,电子邮箱,FTP服务器
传输层 tcp包,通过某个端口,像某个具体的应用层提供服务
IP网络层 ip路由通过IP地址,定位到具体的某个电脑
物理链路层 将二进制包转换成网络信号
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

参考文献:

相关文章

  • http 初步了解(一)

    本系列大概分为以下几个部分 1: 了解协议,dns,dhcp,ISP,CDN2: 了解http 请求体:heade...

  • http协议入门

    通过对http协议的初步了解,了解到http的工作原理,了解到什么叫请求行状态行和消息头,了解到了缓存机制,了解到...

  • Spring Clound 系列

    eureka 初步了解 搭建eureka 服务 启动服务http://localhost:8761image.png

  • 2017/5/25总结

    经历:1.初步了解http协议学到:1.http消息包头域的理解2.HTTP之状态码3.HTTP请求方法想到:1....

  • Android 面试知识点总结3

    Q1 Activity启动模式 资料 Q2 Android Socket通信的初步了解 资料 Q3 HTTP的了解...

  • HTTP初步感知

    超文本传输协议(HyperText Transfer Protocol, 简称 HTTP),是万维网数据通信的基础...

  • 初步了解

    什么是css语法?CSS (Cascading Style Sheets) 层叠样式表,用来编辑 HTML中元素...

  • AFNetWorking初步了解(一)

    前言 AFNetWorking是日常开发中用的最多的网络框架了,平时仅限于对AF的一些封装,并没有对它从源码了解过...

  • 一:初步了解Mybatis

    1:使用maven导入mybatis的依赖 1.0:使用idea创建一个maven项目 1.1:一个maven的空...

  • go http模块源码分析-server端

    前言 近期使用go开发api后台服务,对http模块源码有初步了解,所以整理总结一下。 server端核心模型包括...

网友评论

      本文标题:http 初步了解(一)

      本文链接:https://www.haomeiwen.com/subject/jhveiqtx.html