IP地址的分配
◼ IP地址按照分配方式,可以分为:静态IP地址、动态IP地址
静态IP地址
✓ 手动设置
✓ 适用场景:不怎么挪动的台式机(比如学校机房中的台式机)、服务器等(方便别人访问我)
静态配置自己的IP地址,在自己的电脑上也可以配
特点是,我想让它是多少,它就是多少
动态IP地址
✓ 从DHCP服务器自动获取IP地址
✓ 适用场景:移动设备、无线设备等(避免与别人产生冲突)
DHCP
◼ DHCP(Dynamic Host Configuration Protocol),译为:动态主机配置协议
DHCP协议基于UDP协议,客户端是68端口,服务器是67端口
◼ DHCP服务器会从IP地址池中,挑选一个IP地址“出租“给客户端一段时间,时间到期就回收它们
平时家里上网的路由器就可以充当DHCP服务器
平时上网是路由器分配IP地址给我们
DHCP—分配IP地址的4个阶段
◼ DISCOVER:发现周围的服务器
发广播包(源IP是0.0.0.0,目标IP是255.255.255.255,目标MAC是FF:FF:FF:FF:FF:FF)
◼ OFFER:提供租约
服务器收到了广播包,返回可以租用的IP地址,以及租用期限、子网掩码、网关、DNS等信息(一整套上外网要用到的信息)
注意:这里可能会有多个服务器提供租约
◼ REQUEST:选择IP地址
客户端选择一个OFFER,发送广播包进行回应
◼ ACKNOWLEDGE:确认
被选中的服务器发送ACK数据包给客户端,这个IP地址给你用,完全没问题
至此,IP地址分配完毕
DHCP—4个阶段
图中的192.168.3.1是客户端的网关
DHCP—细节
◼ DHCP服务器可以跨网段分配IP地址么?(DHCP服务器、客户端不在同一个网段)
可以借助DHCP中继代理(DHCP Relay Agent)实现跨网段分配IP地址
◼ 自动续约
客户端会在租期不足的时候,自动向DHCP服务器发送REQUEST信息申请续约
◼ 常用命令
ipconfig /all:可以看到DHCP相关的详细信息,比如租约过期时间、DHCP服务器地址等
ipconfig /release:释放租约
不要这个IP了
ipconfig /renew:重新申请IP地址、申请续约(延长租期)
申请续约的数据包
HTTP
◼ HTTP(Hyper Text Transfer Protocol),译为超文本传输协议
客户端发送HTTP请求过去,服务器返回HTML,所以就叫超文本传输协议
是互联网中应用最广泛的应用层协议之一
设计HTTP最初的目的是:提供一种发布和接收HTML页面的方法,由URI来标识具体的资源
能够让你浏览网页
URL统一资源定位符,非常完整的URI(统一资源标识符),能够在全网做唯一标识的。
在局部条件下唯一,只能叫URI,URI包括了URL
后面用HTTP来传递的数据格式不仅仅是HTML,应用非常广泛
随着互联网的发展,我们需要看到的东西丰富多彩,看图片、看视频
◼ HTML( Hyper Text Markup Language):超文本标记语言
用标签语言写的,例如head、form,我们编写的任何代码都是字符串文本,它能表达文本,比如登录框,文本就是给我们看的
超文本就是能够用文本表达超出文本范围之外的东西,例如超链接
用以编写网页
维基百科
想查资料,优先维基百科
版本
◼ 1991年,HTTP/0.9
只支持GET请求方法获取文本数据(比如HTML文档),且不支持请求头、响应头等,无法向服务器传递太多信息
get请求,根据uri获取资源
◼ 1996年,HTTP/1.0
支持POST、HEAD等请求方法,支持请求头、响应头等,支持更多种数据类型(不再局限于文本数据)
浏览器的每次请求都需要与服务器建立一个TCP连接,请求处理完成后立即断开TCP连接(短连接),这样子效率是很低的,一个丰富的网页,需要用到很多东西
浏览器通过get请求,拿到HTML,解析渲染一个丰富的网页在我眼前
◼ 1997年,HTTP/1.1(最经典、使用最广泛的版本)
支持PUT、DELETE等请求方法
采用持久连接(Connection: keep-alive),多个请求可以共用同一个TCP连接
◼ 2015年,HTTP/2.0
◼ 2018年,HTTP/3.0(目前处于一个草稿阶段)
标准
不同的协议,数据格式是不一样的,特别是应用层协议,简直就是百花齐放,像其它层的协议,就是先加一个首部,有时候可能会有一个差错校验
◼ HTTP的标准
由万维网协会(W3C)、互联网工程任务组(IETF)协调制定,最终发布了一系列的RFC
◼ RFC(Request For Comments,可以译为:请求意见稿)
先提交意见稿,审核通过了就是正式协议
官网:https://datatracker.ietf.org/
HTTP/1.1最早是在1997年的RFC 2068中记录的
URL:https://datatracker.ietf.org/doc/rfc2068/
✓ 该规范在1999年的RFC 2616中已作废
✓ 2014年又由RFC 7230系列的RFC取代
HTTP/2标准于2015年5月以RFC 7540正式发表,取代HTTP/1.1成为HTTP的实现标准
◼ 中国的RFC
1996年3月,清华大学提交的适应不同国家和地区中文编码的汉字统一传输标准被IETF通过为RFC 1922
成为中国大陆第一个被认可为RFC文件的提交协议
报文格式
浏览器只能把一些数据包解析成页面给我们看,我们通过浏览器看不到底层的东西,用浏览器来看协议,不严谨
客户端发给服务器的数据包里面,什么都有,包括用什么浏览器,什么请求方式,我要请求什么
用wireshark,点击数据流,选追踪流,HTTP流,可以查看完整的数据流,
用浏览器观察数据,一般要选择view source
服务器拿到HTTP报文,来进行解析,给客户端响应,不仅仅只是HTML
浏览器会进行解析,把返回的数据,分成两个部分,返回头,数据
HTTP请求格式是固定的,请求行一定是请求方法,请求资源,请求协议版本
空白代表换行,采用ASCII来编码
这里有点不太严谨,应该是URI
回车是一个字节,换行是一个字节,总共两个字节
在字节流里面,请求报文是在一行的
在不同的 *** 作系统里面,两个都可以用来标识回车换行,在字节流里面,两个都要,显得严谨,不会漏过
首部行严谨点来讲应该叫请求头
在请求头,最后有两个回车换行,用来跟请求体分开
必须按照HTTP格式来发,不然服务器不认
get请求请求内容放在请求行,post请求请求内容放在请求体
uri是有长度限定的,get请求通过拼接uri,发送数据给服务器
POST请求,可以发送很长的数据,没有限制
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)