HTTP协议相关概念介绍
相关概念
端口号分配
互联网号码分配局(英语:Internet Assigned Numbers Authority,缩写IANA),是一家互联网地址指派机构,管理国际互联网中使用的IP地址、域名和许多其它参数的机构。IP地址、自治系统成员以及许多顶级和二级域名分配的日常职责由国际互联网注册中心(IR)和地区注册中心承担。IANA是由ICANN管理的。
关于IP地址端口号的分配,如下:
0-1023
:众所周知,永久地分配给固定的应用使用,特权端口1024-41951
:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用,例如:3306/tcp, 11211/tcp
41952+
:客户端程序随机使用的端口,动态端口,或私有端口;其范围定义在/proc/sys/net/ipv4/ip_local_port_range
.
BSD Socket
Socket:套接字,进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换。
Socket API:封装了内核中所提供的socket通信相关的系统调用。
-
Socket Type(根据使用的传输层协议)
SOCK_STREAM # 流,TCP套接字,可靠地传递、面向连接 SOCK_DGRAM # 数据报,UDP套接字,不可靠地传递、无连接 SOCK_RAW # 裸套接字,无需TCP或UDP,APP直接通过IP包通信
-
Socket Domain(根据套按字所使用的地址格式)
AF_INET # Address Family,IPv4 AF_INET6 # Address Family,IPv6 AF_UNIX # 同一主机上的不同进程间基于socket套接字通信使用的一种地址(Unix_SOCK)
TCP
可参考:https://blog.csdn.net/weixin_44983653/article/details/98035295
TCP协议的特性:
建立连接:三次握手
将数据打包成段:校验和(CRC32)
确认、重传及超时
排序:逻辑序号
流量控制:滑动窗口算法
拥塞控制:慢启动和拥塞避免算法
HTTP 相关术语
HTTP
超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。
HTTP是一个客户端(用户)和服务端(网站)之间请求和应答的标准,通常使用TCP协议。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。
尽管TCP/IP协议是互联网上最流行的应用,但是在HTTP协议中并没有规定它必须使用或它支持的层。事实上HTTP可以在任何互联网协议或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用,所以其在TCP/IP协议族使用TCP作为其传输层。
通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。
HTML 介绍
超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。HTML是一种基础技术,常与CSS、JavaScript一起被众多网站用于设计网页、网页应用程序以及移动应用程序的用户界面。网页浏览器可以读取HTML文件,并将其渲染成可视化网页。HTML描述了一个网站的结构语义随着线索的呈现,使之成为一种标记语言而非编程语言。
HTML元素是构建网站的基石。HTML允许嵌入图像与对象,并且可以用于创建交互式表单,它被用来结构化信息——例如标题、段落和列表等等,也可用来在一定程度上描述文档的外观和语义。HTML的语言形式为尖括号包围的HTML元素(如<html>
),浏览器使用HTML标签和脚本来诠释网页内容,但不会将它们显示在页面上。
HTML可以嵌入如JavaScript的脚本语言,它们会影响HTML网页的行为。网页浏览器也可以引用层叠样式表(CSS)来定义文本和其它元素的外观与布局。维护HTML和CSS标准的组织万维网联盟(W3C)鼓励人们使用CSS替代一些用于表现的HTML元素。
HTML 标记
HTML标记包含标签(及其属性)、基于字符的数据类型、字符引用和实体引用等几个关键部分。HTML标签是最常见的,通常成对出现,比如 <h1>
与 </h1>
。这些成对出现的标签中,第一个标签是开始标签,第二个标签是结束标签。两个标签之间为元素的内容,有些标签没有内容,为空元素,如<img>
。
以下是一个经典的Hello World程序的例子:
<!DOCTYPE html>
<html>
<head>
<title>This is a title</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
<html>
和</html>
之间的文本描述网页,<body>
和</body>
之间的文本为可视页面内容。标记文本<title>This is a title</title>
定义了浏览器的页面标题。
HTML 元素
HTML文档由嵌套的HTML元素构成。它们用HTML标签表示,包含于尖括号中,如<p>
在一般情况下,一个元素由一对标签表示:“开始标签”<p>
与“结束标签”</p>
。元素如果含有文本内容,就被放置在这些标签之间。
在开始与结束标签之间也可以封装另外的标签,包括标签与文本的混合。这些嵌套元素是父元素的子元素。
开始标签也可包含标签属性。这些属性有诸如标识文档区块、将样式信息绑定到文档演示和为一些如<img>
等的标签嵌入图像、引用图像来源等作用。
一些元素如换行符<br>
,不允许嵌入任何内容,无论是文字或其他标签。这些元素只需一个单一的空标签(类似于一个开始标签),无需结束标签。
许多标签是可选的,尤其是那些很常用的段落元素<p>
的闭合端标签。HTML浏览器或其他介质可以从上下文识别出元素的闭合端以及由HTML标准所定义的结构规则。这些规则非常复杂,不是大多数HTML编码人员可以完全理解的。
因此,一个HTML元素的一般形式为:<tag attribute1="value1" attribute2="value2">''content''</tag>
。一些HTML元素被定义为空元素,其形式为<tag attribute1="value1" attribute2="value2">
。空元素不能封装任何内容。例如<br>
标签或内联标签<img>
。一个HTML元素的名称即为标签使用的名称。注意,结束标签的名称前面有一个斜杠“/”
,空元素不需要也不允许结束标签。如果元素属性未标明,则使用其默认值。
HTML 文档的页眉
HTML文档的页眉:<head>...</head>
。标题被包含在头部,例如:
<head>
<title>The Title</title>
</head>
HTML 文档的标题
HTML标题由<h1>
到<h6>
六个标签构成,字体由大到小递减。
<h1>Heading level 1</h1>
<h2>Heading level 2</h2>
<h3>Heading level 3</h3>
<h4>Heading level 4</h4>
<h5>Heading level 5</h5>
<h6>Heading level 6<