HTTP协议
HTTP协议:属于应用层协议
1.格式:首行(方法+URL+版本号)+ Header(请求的属性,以冒号分割的键值对,遇到空行表示结束)+body(header中的conten_length标识其长度)
2. 方法:GET/HEAD:安全方法,因为他们的http请求不会产生什么动作,也就是说不会修改信息
POST:不安全方法,它会修改服务器上的资源,比如提交博客文章或者提交评论
3. 数据传输大小:对于GET:传输数据会受到URL长度的限制;对于POST:理论上不受限制,但是服务器会根据对POST提交的数据大小进行限制
4. 安全性:POST的安全性比GET高,这里的安全是指真正的安全,上面提到的安全仅仅是指不修改服务器的数据。因为GET请求会在URL中暴露传输的数据,所以在涉及密码登录的情况,安全性就比较低。
5.URL:其实就是通常所说的网址。URL又分为3个部分(应用层协议:域名/资源路径),它是专门表示网路上资源位置而设的一种编码方式。
6. 版本号:一般就1.1或者1.0
Header:Host 属性是一个可读可写的字符串,可设置或返回当前URL的主机名称和端口号
Connection: 默认保持连接,除非在请求头或响应头指明要关闭:Connection:close
Cache-Control :指定请求和响应遵循的缓存机制,我的是max-age=0,表示指定客户机可以接受生存期不大于0秒的响应
Accept:指定客户端能够接受的内容类型
Cookie:HTTP发送请求时,会把保存在请求域名下的所有cookie值一起发给web服务器; 如何实现登录功能:cookie (在浏览器保存用户的身份信息 ---保存服务器分配的sessionID)+session(会话,服务器上的概念,超过一段时间,session失效,就要重新登录)
body:POST请求比GET请求多了一个body,所以说GET也就没有表示body长度的content_length。那么这里谈body的,只针对POST请求
常见的post提交数据类型有四种:
1.第一种:application/json:这是最常见的json格式如下
{"input1":"xxx","input2":"ooo","remember":false}
2.第二种:application/x-www-form-urlencoded:浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数
input1=xxx&input2=ooo&remember=false
3.第三种:multipart/form-data:这一种是表单格式的,数据类型如下
------WebKitFormBoundaryrGKCBY7qhFd3TrwAContent-Disposition: form-data; name="text"
title------WebKitFormBoundaryrGKCBY7qhFd3TrwAContent-Disposition:form-data;name="file";filename="chrome.png"Content-Type: image/pngPNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
4.第四种:text/xml:这种直接传的xml格式
HTTP常见状态码:
200(成功/OK)
404(服务器找不到请求的网页/not found)
403(服务器拒绝请求/重定向)
504(没有及时从上游服务器收到请求)
ARP协议
ARP协议背景:经常用到但是不一定知道的协议。在链路层上,主机和路由器用他们的物理地址来标记,即48 位的物理地址,也是我们通常说的网卡地址(Mac地址)
在网络层上,主机和路由器由逻辑地址来标识,逻辑地址是唯一的,但在全局上不一定。在TCP/IP协议族中称为IP地址,现在常用的版本是IPv4,长度是32位。因此就需要能够将逻辑地址和相应物理地址之间进行映射,分为静态映射和多态映射。
静态映射:创建一个表,存储逻辑地址和物理地址之间的关联关系。然后将网络上的每个主机都存储这张表。缺点是映射表必须周期的更新,增加了 网络的开销。
动态映射:地址解析协议ARP和逆地址解析协议RARP。
ARP概念:
* Address Resilution Protocol地址解析协议用于计算机的网络IP地址转换为物理MAC地址。ARP协议的基本原理就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。每一台安装有TCP/IP协议的电脑都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的。
*不管网络层使用寿命协议,在实际网路ode链路上传送数据帧时,最终还是要通过硬件地址
*每一个主机都设有一个ARP告诉缓存,里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表
*当主机A欲访问本局域网上某个主机B并发送数据报时,就先在ARP告诉缓存中查看有无主机B的IP地址,如果有,就可以查出对应的硬件地址,在将此硬件地址写入MAC帧,然后通过局域网将该Mac帧发往此硬件地址
作用:
*为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组
*当主机B收到A的ARP请求分组时,就将主机A的这一地址映射写到主机B自己的ARP高速缓存中。主机B以后向A发送数据时就更方便了
注意事项:
*从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析的过程是不知道的
*只要主机或者路由器要和本网络上的另外一个已知IP地址的主机进行通信,ARP协议就会自动将该IP地址解析成链路层所需要的硬件地址
*默认情况下ARP缓存的超时时限是两分钟
ARP相关命令:
*arp -a 查看本机当前arp表
*arp -d 清除本机arp缓存表
*arp -s 绑定arp地址