node.js学习笔记 11HTTP
创始人
2024-01-31 13:24:13
0次

HTTP协议
    - 网络基础
    - 网络的服务器基于请求和响应的
    https:// 
        协议名 http ftp ...

    xxxxx.com 
        域名 domain
            整个网络中存在着很多个服务器,每一个服务器都有他自己的唯一标识,这个标识被称为ip地址 如192.168.1.17,但是ip地址不方便记忆,域名就相当于ip地址别名
     
    /hello/index.html
        网站资源路径

    1.当在浏览器中输入地址后发生了什么?
        1.DNS解析,获取网站的ip地址
        2.浏览器需要和服务器建立链接(tcp/ip)(三次握手)
        3.向服务器发送请求报文(http协议)
        4.服务器处理请求,并返回响应报文(http协议)
        5.浏览器将响应的页面渲染
        6.断开和服务器的连接(四次挥手)
    
    2.客户端如何和服务器建立(断开)连接
        - 通过三次握手和四次挥手
            - 三次握手(建立连接)
                - 三次握手是客户端和服务器建立连接的过程
                    1.客户端向服务器发送连接请求(SYN(同步标识符))
                    2.服务器收到连接请求,向客服端返回消息(SYN(申请与客户端通信),ACK(表示同意))
                    3.客户端向服务器发送同意连接的信息(ACK(表示同意))
            - 四次挥手(断开连接)
                    1.客户端向服务器发送请求,通知服务器数据发送完毕,请求断开连接(FIN(表示数据发完了))
                    2.服务器向客户端返回数据,知道了(ACK(表示知道了))
                    3.服务器向客服端返回数据,收完了,可以断开连接(FIN(数据收完了),ACK(同意断开连接))
                    4.客户端向服务器发数据,可以断开了(ACK(表示知道了))
请求和响应实际上就是一段数据,只是这段数据需要遵循一个特殊的格式,这个特殊的格式由HTTP协议来规定

TCP/IP 协议族(了解)
    - TCP/IP协议族中包含了一组协议
        这组协议规定了互联网中的所有通信的细节
    - 网络通信的过程由4层组成
        应用层
            - 软件的层面,浏览器服务器都属于应用层
        传输层
            - 负责对数据进行拆分,把大数据拆分为一个一个小包
        网络层
            - 负责给数据包添加信息
        数据链路层
            - 传输信息

    - HTTP协议就是应用层的协议,用来规定客户端和服务器间通信的报文格式的

    - 报文(message)是什么?
        - 浏览器和服务器之间通信是基于请求和相应的
            - 浏览器向服务器发送请求(request)
            - 服务器向浏览器返回响应(response)
                服务器向浏览器返回响应,相当于服务器给浏览器回信
                这个信在HTTP协议中就被称为报文
            - 而HTTP协议就是对这个报文的格式进行规定

        - 服务器
         - 一个服务器的主要功能:
            1.可以接收到浏览器发送的请求报文
            2.可以向浏览器返回响应报文

        - 请求报文(request)
            - 客户端发送给服务器的报文称为请求报文
            - 请求报文的格式如下:
                请求首行
                请求头
                空行
                请求体

                请求首行
                    GET /index.html?username=tonyHTTP/1.1
                    第一部分 get 表示请求的方式,get表示发送的get请求
                        现在常用的方式就是get和post请求
                        get请求主要用来向服务器请求资源
                        post请求主要用来向服务器发送数据

                    第二部分 /index.html?username=tony
                    表示请求资源的路径
                        ? 后面的内容叫做查询字符串
                        查询字符串是一个名值对结构,一个名字对应一个值
                            使用=连接,多个名值对之间使用&分割
                        
                        get请求通过查询字符串将数据发送到服务器
                            由于查询字符串会在浏览器地址栏直接显示,所以他安全性较差,同时,由于url地址长度有限制,所以get请求无法发送较大数据

                        post请求通过请求体来发送数据
                            - 在Chrome中通过 载荷 来查看
                            post请求通过请求体发送数据,无法在地址栏直接查看所以安全性较好

                            请求体的大小没有限制,可以发送任意大小的数据

                    第三部分 HTTP/1.1 协议的版本

                请求头
                - 请求头也是名值对结构,用来告诉服务器我们浏览器的信息
                - 每一个请求头都有它的作用:
                    Accept 浏览器可以接受的文件类型

                    Accept-Encoding 浏览器允许的压缩的编码

                    Accept-Language 客户端浏览器可以接受的语言

                    User-Agent 用户代理,他是一段用来描述浏览器信息的字符串
                空行
                    - 用来分隔请求头和请求体
                
                请求体
                    - post请求通过请求体来发送数据

        网页,css,js,图片这些资源会作为响应报文中的哪一部分发送响应体

        - 响应报文:
            响应首行
                HTTP/1.1 200 OK
                    200 响应状态码
                    OK 对响应状态码的描述
                    - 响应状态吗的规则
                        1xx 请求处理中
                        2xx 表示成功
                        3xx 表示请求的重定向
                        4xx 表示客户端错误
                        5xx 表示服务器错误
            响应头
                - 响应头也是一个一个的名值对结构,用来告诉浏览器响应的信息
                Content-Type 用来描述响应体的类型
                Content-Length 用来描述响应体的大小
            空行
                - 空行用来分隔响应头与响应体
            响应体
                - 服务端返回给客户端的内容

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...