热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTTP学习(一)

学习笔记-HTTP笔记目录:https:blog.csdn.netweixin_42717928articledetails114343085昨天下了雨,

学习笔记-HTTP

笔记目录:https://blog.csdn.net/weixin_42717928/article/details/114343085

昨天下了雨,今天刮了风,明天太阳就出来了


  •  简单了解
  • TCP/IP基础
  • URI和URL

一:简单了解

如在百度输入www.baidu.com,回车,就能打开百度的网页

这种通过发送请求获取服务器资源的Web浏览器,可以称为客户端(client)

Web使用HTTP(超文本传输协议)为规范,完成两端之间的运作流程

HTTP于96年5月正式公布,命名HTTP/1.0

97年1月公布HTTP/1.1,是目前主流版本

二:TCP/IP基础

网络是在TCP/IP协议族的基础上运作的,HTTP是它内部的一个子集

TCP/IP是网络相关联的协议集合起来的总称(也有其他说法)

TCP/IP协议族按照分层分为为4层:应用层、传输层、网络层、数据链路层

分层的好处:某个地方有改动,就无需整体改动;各层间接口规划好,每个层次内部设计也能自由改动

应用层:向用户提供应用服务时通信的活动,如:

FTP(文件传输协议)、DNS(域名系统)、HTTP协议

传输层:提供处于网络连接中的两台计算机之间的数据传输

TCP(传输控制协议)、UDP(用户数据协议)

网络层(网络互连层):用来处理在网络上流动的数据包(数据包是网络传输的最小数据单位)

该层规定了通过怎样的传输路线到达对方计算机,并把数据包传送给对方

链路层(数据链路层,网络接口层):用来处理连接网络的硬件部分

流程:

  • 客户端在应用层(HTTP协议),发出一个请求
  • 在传输层(TCP协议)把应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层
  • 在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层
  • 接收端的服务器在链路层接受到数据,按序往上层发送,直到应用层为止
  • 发送端在层与层之间传输数据,每经过一层就打上一个该层所属的首部信息,接收端再一层层的去掉,这种将数据信息包装起来的做法称为封装(HTTP数据-TCP首部-IP首部-以太网首部)

(一)IP协议

IP网际协议位于网络层,,它是一种协议的名称,作用是将数据包传送给对方,其中需要2个条件(IP地址和MAC地址)

IP地址指明节点被分配的地址,MAC地址是指网卡所属的固定地址,它们之间会进行匹配,IP可变换,MAC基本不更改

通信双方在同一个局域网(LAN)的情况很少,通常需要经过多台计算机和网络设备中转才能连接到对方,在中转时,会使用下一站中转设备的MAC地址,需要ARP协议(用于解析地址的协议,根据通信双方的IP地址就能反查出对应的MAC地址)

(2)TCP协议

TCP位于传输层,提供可靠的字节流服务

就是将大块数据分割成以报文段为单位的数据包进行管理

TCP采用了三次握手策略,确保数据送达目标处,握手过程中使用了TCP的标志(flag)-SYN(synchronize)-ACK(acknowledgement)

流程:

  • 发送端发送带SYN标志的数据包给对方
  • 接收端接收后,回传带SYN/ACK标志的数据包,表示传达确认信息
  • 发送端再回传一个带ACK标志的数据包,表示“握手”接收

(3)DNS服务

DNS服务也是应用层的协议,提供域名到IP地址之间的解析服务

计算机可以被赋予IP地址,也可以被赋予主机名和域名,用户通常使用主机名或域名来访问对方的计算机,因为IP可能难记忆

DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务

(如发送端想访问A网页,DNS把A网页对应的IP地址给发送端,发送端再向该地址发起请求)

总结流程:

  • 客户端告诉DNS想请求baidu.com
  • DNS告诉客户端对应的IP地址
  • 客户端向该地址发起请求
  • 在应用层,HTTP生成针对目标Web服务器的HTTP请求报文
  • 在传输层,TCP为了通信方便,将HTTP请求报文分割成报文段
  • 在网络层,IP协议搜索对方的地址,一边中转一边传送(中途可能经过多个路由器)
  • 在另一端的传输层,TCP再将接收的报文段,按序号重组请求报文段
  • 在另一端的应用层,HTTP协议对Web服务器请求的内容处理
  • 请求的处理结果同理回传

三:URI和URL

(1)URL(统一资源定位符),如:http://a.com

表示指定的URI,又分为绝对/相对URL。相对URL是指从浏览器中基本URI处指定的URL

绝对URL形式:

http://user:pass@www.a.jp:80/dir/index.htm?uid=1#ch1

  • http://:协议方案名
  • user:pass:登录信息(认证)(可选项)
  • www.a.jp:服务器地址(也可以是192.168.1.1这类的IPv4地址名,或[0:0:0:0:0:0:0:1]这类的IPv6地址名)
  • 80:端口号(可选项,省略则用默认的端口号)
  • dir/index.htm:带层次的文件路径
  • uid:查询字符串
  • ch1:片段标识符(标记出已获取资源中的子资源)

(2)URI(统一资源标识符,Uniform Resource Identifier)

Uniform:规定统一格式可分别处理多种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式,后续新增协议方案也容易(如http:或ftp:)

Resource:“可标识的任何东西”

Identifier:标识符

综上所述:URI是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称。(如采用HTTP协议,协议方案就是http)




推荐阅读
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文总结了在多人协作开发环境中使用 Git 时常见的问题及其解决方案,包括错误合并分支的处理、使用 SourceTree 查找问题提交、Git 自动生成的提交信息解释、删除远程仓库文件夹而不删除本地文件的方法、合并冲突时的注意事项以及如何将多个提交合并为一个。 ... [详细]
  • 宝塔面板下启用HTTPS的详细指南
    本文提供了在宝塔面板环境中配置HTTPS的具体步骤,确保您的网站通信更加安全可靠。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文探讨了如何利用RxJS库在AngularJS应用中实现对用户单击和拖动操作的精确区分,特别是在调整区域大小的场景下。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文探讨了在AspNetForums平台中实施基于角色的权限控制系统的方法,旨在为不同级别的用户提供合适的访问权限,确保系统的安全性和可用性。 ... [详细]
  • Spring Security基础配置详解
    本文详细介绍了Spring Security的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。 ... [详细]
  • 在中标麒麟操作系统上部署达梦数据库及导入SQL文件
    本文档详细介绍了如何在中标麒麟操作系统上安装达梦数据库,并提供了导入SQL文件的具体步骤。首先,检查系统的发行版和内核版本,接着创建必要的用户和用户组,规划数据库安装路径,挂载安装介质,调整系统限制以确保数据库的正常运行,最后通过图形界面完成数据库的安装。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
author-avatar
skuman2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有