当前位置: 首页 > news >正文

nodejs学习计划--(三)http协议和IP介绍

一、 HTPP协议

1、概念

HTTP(hypertext transport protocol)协议;中文叫超文本传输协议
是一种基于TCP/IP的应用层通信协议
这个协议详细规定了 浏览器 和万维网 服务器 之间互相通信的规则。
协议中主要规定了两个方面的内容

  • 客户端:用来向服务器发送数据,可以被称之为请求报文
  • 服务端:向客户端返回数据,可以被称之为响应报文

报文:可以简单理解为就是一堆字符串

示例:
请求行:POST http://www.baidu.com:80/index.html?a=100&b=200#logo HTTP/1.1
请求头:HOST: http:// www.baidu.com...
空格:
请求体:{"keywords":"手机","price":2000}

2、请求报文的组成

  • 请求行
  • 请求头
  • 空行
  • 请求体

1. HTTP 的请求行

  • 请求方法(getpostputdelete等)
  • 请求 URL(统一资源定位器)
    例如:http://www.baidu.com:80/index.html?a=100&b=200#logo
    • http: 协议(httpsftpssh等)
    • www.baidu.com 域名
    • 80 端口号
    • /index.html 路径
    • a=100&b=200 查询字符串
    • #logo 哈希(锚点链接)
  • HTTP协议版本号

2. HTTP 请求头

  • 格式:『头名:头值』
  • 常见的请求头有
请求头解释
Host主机名
Connection连接的设置 keep-alive(保持连接);close(关闭连接)
Cache-Control缓存控制 max-age = 0 (没有缓存)
Upgrade-Insecure-Requests将网页中的http请求转化为https请求(很少用)老网站升级
User-Agent用户代理,客户端字符串标识,服务器可以通过这个标识来识别这个请求来自哪个客户端 ,一般在PC端和手机端的区分
Accept设置浏览器接收的数据类型
Accept-Encoding设置接收的压缩方式
Accept-Language设置接收的语言 q=0.7 为喜好系数,满分为1
Cookie储存

3. HTTP 请求体

  • 请求体内容的格式是非常灵活的,
    (可以是空)> GET请求,
    (也可以是字符串,还可以是JSON
    => POST请求
    例如:
    • 字符串:keywords=手机&price=2000
    • JSON{"keywords":"手机","price":2000}

3、响应报文的组成

  • 响应行
  • 响应头
  • 空行
  • 响应体
示例:
响应行:HTTP/1.1 200 OK
响应头:Cache-Control: private...
空行
响应体:

1. 响应行

  • HTTP/1.1HTTP协议版本号
  • 200:响应状态码 404 Not Found 500 Internal Server Error
  • 还有一些状态码,参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
  • OK:响应状态描述
  • 响应状态码和响应字符串关系是一一对应的。

2. 响应头

Cache-Control:缓存控制 private 私有的,只允许客户端缓存数据
Connection 链接设置
Content-Type:text/html;charset=utf-8 设置响应体的数据类型以及字符集,响应体为html,字符集
utf-8
Content-Length:响应体的长度,单位为字节

3. 响应体

响应体内容的类型是非常灵活的,常见的类型有 HTML、CSS、JS、图片、JSON

二、IP

  • IP本身是一个数字标识 (决定设备)
  • IP用来标志网络设备,实现设备间通信
  • IP的分类:
类型说明
本机回环IP地址127.0.0.1~127.255.255.254
196.168.0.0~192.168.255.255
局域网IP(私网IP127.16.0.0~172.31.255.255
10.0.0.0~10.255.255.255
广域网IP除上述之外

参考网址

  • 端口:(决定程序)
    • 应用程序的数字标识
    • 主要作用是实现了不同主机应用程序之间的通信

相关文章:

  • 户外用品一站式采购,一手优质货源,产品种类多,就在2024深圳户外展
  • pyDAL一个python的ORM(终) pyDAL的一些性能优化
  • 【QT+QGIS跨平台编译】之二:【zlib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • Electron中苹果支付 Apple Pay inAppPurchase 内购支付
  • vue3中Fragment特性的一个bug,需要留意的注意事项
  • redis-exporter grafana面板配置
  • linux SSH/Telnet/Shell/CMD终端软件之WindTerm
  • 定时获取微博热搜数据
  • 《WebKit 技术内幕》之五(1): HTML解释器和DOM 模型
  • 深度学习模型之yolov8实例分割模型TesorRT部署-python版本
  • Dell戴尔XPS 8930笔记本电脑原装Win10系统 恢复出厂预装OEM系统
  • c JPEG 1D DCT 优化1
  • Camera基础原理与畸变补偿
  • Webpack5入门到原理22:提升打包构建速度
  • EtherNet/IP开发:C++开发CIP源代码
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • [译] 怎样写一个基础的编译器
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • ECMAScript入门(七)--Module语法
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • es6要点
  • ES6之路之模块详解
  • java中的hashCode
  • Laravel 菜鸟晋级之路
  • opencv python Meanshift 和 Camshift
  • sessionStorage和localStorage
  • springboot_database项目介绍
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 观察者模式实现非直接耦合
  • 基于 Babel 的 npm 包最小化设置
  • 经典排序算法及其 Java 实现
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 一个项目push到多个远程Git仓库
  • 在Unity中实现一个简单的消息管理器
  • 转载:[译] 内容加速黑科技趣谈
  • Android开发者必备:推荐一款助力开发的开源APP
  • !!Dom4j 学习笔记
  • #大学#套接字
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (C语言)共用体union的用法举例
  • (附源码)php投票系统 毕业设计 121500
  • (论文阅读11/100)Fast R-CNN
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十三)Flask之特殊装饰器详解
  • (四)鸿鹄云架构一服务注册中心
  • (转) ns2/nam与nam实现相关的文件
  • ./configure,make,make install的作用
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .chm格式文件如何阅读
  • .NET DataGridView数据绑定说明