自学内容网 自学内容网

07.24_111期_Linux_端口号

应用层协议:
HTTP协议:超文本传输协议,是一个无连接、无状态的协议
超文本:图片,音频,视频都属于超文本

URL:统一资源定位符,实际上就是一个形如https://new.q.com /rain/a/........的网址,
    其中new.qq.com是域名,域名可以被转换成IP地址,这个转换的操作叫 DNS

协议名称和端口号是强关联的,http协议规定了 服务器 绑定了 80 端口号
所以在通过http 访问网站时,会自动填充 80 这个端口号,

然后访问这个 网站的服务器时 是通过 域名生成的 IP地址 和 80 端口号 这两者进行访问的

/rain/a/........ 是资源,可能是网页,图片,视频,音频等资源
通过/rain/a/........这一路径就能找到资源文件
注意:
    这里的第一个反斜杠 / 不一定是目标服务器中的根目录,
    这个反斜杠 / 代表的是web根目录,可以是目标服务器中的任意目录

在客户端向某一个网站发送请求时
由于这个请求在网站对应的服务器看来,是能看到客户端是什么操作系统的

http 请求必须满足一定的格式,对于请求方
请求分为以下几部分
1. 请求行       由 请求方法、空格、URI、空格、HTTP版本、\r\n 组成
2. 请求/需求报头 格式为 key: value
3. 空行         
4. 请求正文     数据

对于请求行的说明
    1. URI是 URL 的 后半部分,即访问资源的路径,也有可能是完整的URL
    2. HTTP版本有: 1.0, 1.1, 2.0
    3. 只通过3. 空行就能将报头和有效载荷进行分离
    4. 请求/需求报头 已经记录了一个完整的数据应该有多长

获得完整的网页,浏览器先获得首页html,
如果根据html 的标签检测出我们还要获取其它资源,浏览器会继续发送http 请求

content-type 对照表展示了一个文件的后缀 和 该文件的类型的关系

HTTP 请求报头中分为几部分
HOST: 所请求得服务器的 IP + 端口号
Referer: 当前所处的页面是从哪个页面跳转过来的
Connection: 主要用于控制和管理客户端与服务器之间的连接状态
    如果Connection 为 keep-alive,则希望复用TCP连接
    如果Connection 为 close,表示当前的请求/响应完成之后,直接关闭TCP连接

如果一个连接可以处理多个HTTP请求,则称为长连接
如果一个连接在处理完一个HTTP请求之后,直接关闭了,称为短链接

HTTP的状态码
1XX: 信息性状态码:接收的请求是否正在处理
2XX: 成功状态码:请求正常处理完毕
3XX: 重定向状态码
4XX: 客户端错误状态码,比如客户在访问服务器资源的时候,这个资源不存在
5XX: 服务器错误状态码,比如服务器崩溃

永久重定向 和 临时重定向 的区别
客户端在发出请求后,服务器端收到请求返回的响应报文要求 客户端重新发起请求
并且要求这个请求往新的服务器发送请求,这叫做重定向

临时重定向的例子:用户登陆成功后,重定向到用户首页
永久重定向的例子:网站换域名之后,自动跳转到新域名

永久重定向是给搜索引擎看的
百度会将所有网站的信息爬虫爬下来,
百度将通过搜索词 进行 查找索引,也就是在所有网站信息 查找 搜索词
当一个网站改变了自己的域名之后,搜索引擎将会更改自己搜索的域名

GET 和 POST方法
GET一般用来获取静态资源,也可以通过url向服务器传递参数(用postman这个软件就可以传参)
POST方法可以通过httprequests 的正文来进行传递参数

url 传参中参数的体量一定不大,但是通过正文传参可以传很多参数

POST方法 比 GET方法传参更不容易被看见,但是这两种方法在传参时都不安全
要想安全,应对http 的部分参数进行加密

标识用户状态,对用户的登陆状态进行保持,方便验证用户的身份
cookie 就可以存储客户端的少量信息,
    

IP首部包括:源 IP地址,目的IP地址,协议号
TCP首部包括:源端口号,目的端口号,
通过这5元组是进行网络通信的基础

0 - 1023的端口被称为知名端口号,即端口号 和 服务是强关联的
比如 http服务 和 80端口号是默认绑定的,
ssh服务 和 22端口号是默认绑定的
ftp服务 和 21端口号是默认绑定的
telnet服务 和 23端口号是默认绑定的
https服务 和 443端口号是默认绑定的
这也就是为什么平常在访问某个遵循http协议的具体网站的时候不用输入端口号

一个进程是否可以绑定多个端口号?
    可以,比如TCP可以建立多个listen套接字,
         一个套接字用来发送数据,一个套接字用来发送控制命令

一个端口号是否可以被多个进程绑定?
    不可以,这是为了让服务端进行请求时,
           只要知道一个服务的其中一个端口号,就可以访问这个确定的服务

理解 端口号和 进程的关系
描述进程的结构体是 struct task_struct
    操作系统内部维护了 一张 hash 表
    hash表的key值是端口号,value值是 进程

所以哪些没有在 hash表中 的进程自然就不直接参与网络通信


原文地址:https://blog.csdn.net/weixin_46366676/article/details/140702460

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!