Linux网络基础2之http

这里是ky233的主页,欢迎光临~https://blog.csdn.net/ky233?type=blog

目录

一、认识URL

1.认识URL

2.urlencode和urldecode

二、HTTP协议格式

1.快速构建http请求和相应的报文格式

[三、http demo](#三、http demo)

1.GET和POST

2.HTTP的状态码

3.http的特征

4.HTTP常见Header

5.Cookie和Set-cookie


应用层:就是程序员基于socket接口之上编写的具体逻辑,做的很多工作,都是和文本处理有关的!------协议分析与处理

所以http协议,一定会具有大量的文本分析和协议处理!

一、认识URL

1.认识URL

平时我们俗称的 "网址" 其实就是说的 URL

我们平时上网无非就是我们想获取或者上传资源

一张图片、一这段视频,这些资源在没有被拿到的时候是在对应的Linux服务器上,在一个服务器上可能存在很多的文件资源,当我们请求资源拿到本的的时候,服务器会打开你要访问的文件,读取该文件通过网络发送到客户端

所以我们要打开这个文件先要找到它,这时候就用到路径来标识!

所有的资源:全球范围内,只要找到它的url就能访问到该资源,也成为www,万维网

2.urlencode和urldecode

像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现. 比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。

转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式

例如:

二、HTTP协议格式

在双方通信之前已经进行了三次握手的过程

1.快速构建http请求和相应的报文格式

单纯在报文的角度,http可以是基于行的文本协议!

如何看待:在三次握手之后,这不就是客户端在给服务器发送大量的字节流吗?

所以我们可以看成是线性结构

如何看待,也是看成线性结构!

其中请求行中的协议版本是客户端告诉服务端,客户端用的http版本,而响应行中的协议版本是服务端告诉客户端,服务端用的http版本

http是如何区分报头和有效载荷的呢?

有效载荷:正文部分的内容

答案很简单,是通过空行\r\n的方式来区分的

也就是说我们一定能把报头读完,所以接下来读的就是正文,那么我们如何得知正文的大小呢?

其中报头当中就包含了一种属性Cotent-Length,后面跟的就是正文的长度

三、http demo

1.GET和POST

我们平时上网行为分为两种,从服务器拿资源,以及上传资源

其中拿资源一般GET,上传资源两者都可

GET:是通过URL向服务端传参的,会回显用户的私密信息,不够私密

POST:是通过http的正文部分提交参数的,不会回显,在私密性方面是有保证的

注意:私密性不是安全性

2.HTTP的状态码

永久重定向301和临时重定向302、307

永久重定向:影响用户后续的请求策略如看付费电影,买一次直接就可以看了

临时重定向:不影响用户后续的请求策略

也就是说,客户端发送了一个请求,服务端返回错误码302原因是found,并且会告诉一个新的地址,客户端在向新的地址发送请求

3.http的特征

1.简单快速

2.无连接:虽然底层是TCP但是连接时TCP的事情和我http有什么关系

3.无状态:协议是不会记录你的访问记录之类的,但是登录网站会记录,这是因为因为业务逻辑来管的

4.HTTP常见Header

  • Content-Type: 数据类型(text/html等)
  • Content-Length: Body的长度
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  • User-Agent: 声明用户的操作系统和浏览器版本信息;
  • referer: 当前页面是从哪个页面跳转过来的;
  • location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;

Cookie简单来说就是用来保存用户的私密信息的

但是这种不安全,有风险,所以现如今我们在登陆或者注册的时候生成一个session id,在服务端保存了私密信息,这样客户端发送这个id就可以自动登录了

Set-cookie是写在代码中的,设置之后就可以在http的属性中看到cookie的内容

5.短链接与长连接

短链接就是指一次只传输一个文件如一张图片,长连接则是一次性传输多个文件

相关推荐
白帽黑客沐瑶1 天前
【网络安全就业】信息安全专业的就业前景(非常详细)零基础入门到精通,收藏这篇就够了
网络·安全·web安全·计算机·程序员·编程·网络安全就业
树码小子1 天前
Java网络编程:(socket API编程:TCP协议的 socket API -- 回显程序的服务器端程序的编写)
java·网络·tcp/ip
绿箭柠檬茶1 天前
Ubuntu 服务器配置转发网络访问
服务器·网络·ubuntu
FPGA_Linuxer1 天前
FPGA 40 DAC线缆和光模块带光纤实现40G UDP差异
网络协议·fpga开发·udp
real 11 天前
传输层协议UDP
网络·网络协议·udp
路由侠内网穿透1 天前
本地部署 GPS 跟踪系统 Traccar 并实现外部访问
运维·服务器·网络·windows·tcp/ip
喵手1 天前
玩转Java网络编程:基于Socket的服务器和客户端开发!
java·服务器·网络
徐子元竟然被占了!!1 天前
实验-基本ACL
网络
ftpeak1 天前
从零开始使用 axum-server 构建 HTTP/HTTPS 服务
网络·http·https·rust·web·web app
LabVIEW开发1 天前
LabVIEW气体污染无线监测
网络·labview·labview知识·labview功能·labview程序