初始协议
1.什么是协议?
数据从源地点传输到目的地点,网络上所有设备需要“讲”相同的“语言”。
描述网络通信中如何规范使用“语言” 的一组规则就是协议。
2.数据通信协议:
决定数据的格式和数据的传输的一组规则或者一组惯例
协议分层
ARP协议
IP地址解析为MAC地址
• 主机10.1.1.1想发送数据给主机10.1.1.2,检查缓存,发现没有10.1.1.2的MAC地址
• 主机10.1.1.1发送ARP广播
• 所有主机都接收到10.1.1.1的ARP广播,但只有10.1.1.2给它一个单播回复,并缓存10.1.1.1的MAC地址
• 主机10.1.1.1将10.1.1.2的MAC地址保存到缓存中,发送数据
RARP协议
MAC地址解析为IP地址
• 主机A需要一个IP地址,发送ARP广播
• 主机10.1.1.254是分配IP地址的Server,它将给A一个回复
代理ARP工作原理
IP地址解析为网关的接口MAC地址
• 主机10.1.1.1需要给不在同一网段的主机172.16.1.1发送数据,但是不知道它的MAC地址,因此发送ARP广播
代理ARP工作理2-2
IP地址解析为网关的接口MAC地址
• 网关10.1.1.254给10.1.1.1一个单播回复,将自己的接口MAC地
址告诉给10.1.1.1
ICMP协议
• ICMP消息通过IP数据报传送,被用来发送错误和控制信息。
• ICMP定义了很多信息类型,例如:
目的地不可达、TTL 超时、信息请求、信息应答、地址请求、地址应答
SMTP与POP3协议
SMTP
• Simple Mail Transfer Protocol-简单邮件传输协议
• 用于发送和接收邮件
• 端口号25
POP3
• Post Office Protocol v3-邮局协议版本3
• 用于客户端接收邮件
• 端口号110
Telnet协议
Telnet
• Terminal Network
• 用于文本方式远程管理计算机或路由器等网络设备
• 端口号为TCP的23
• 在主机上操作
开始-运行-cmd
telnet 10.1.1.1
FTP协议
FTP
• File Transfer Protocol-文件传输协议
• 用于传输文件
• 端口号为TCP的21和20
传输层的协议
TCP(Transmission Control Protocol)
• 传输控制协议
• 可靠的、面向连接的协议
• 传输效率低
UDP(User Datagram Protocol)
• 用户数据报协议
• 不可靠的、无连接的服务
• 传输效率高
HTTP协议解析
WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是
HTTP协议。
l
HTTP指超文本传输协议,它是TCP/IP协议集中的一个
应用层
协议,用于定义WEB浏览器与
WEB服务器之间交换数据的过程以及数据本身的格式。
常见Web服务器组件
网站简单区分,可以分为静态网站和动态网站,动态网站可以使用脚本语言进行计算,
而一个动态网站,一般由操作系统搭载Web应用程序,然后联动数据库一起构成,一
般我们把搭载了Web应用的计算器,称之为Web服务器
HTTP请求报文
• Host:
Host请求头主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。
Host:localhost
Host:localhost:8080
• User-Agent:
作用:告诉HTTP服务器, 客户端使用的操作系统、浏览器的名称和版本
• Accept:
作用:浏览器可以接受的媒体类型(MIME类型)
• Cookie:
作用: WEB服务器通过在HTTP响应消息中增加Set-Cookie响应头字段,将 Cookie信息发送给浏览器,
浏览器则通过在HTTP请求消息中增加 Cookie请求头字段将Cookie回传给WEB服务器。
• Referer:
作用: 提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的。
例如:
Host:translate.google.cn
Referer:http://google.cn/?hl=zh-cn&tab=wT
说明我是从http://google.cn/?hl=zh-cn&tab=wT来到translate.google.cn的
HTTP请求方法:
• 请求方法---GET
※ GET请求格式:
<访问路径>[?<arg1>=<value1>[&<arg2>=<value2>....]]
例子:
http://site1.com/get.php
※ GET请求,可以不包含任何数据,只有请求头,没有请求数据。
※ GET请求也可以带需要传递的数据,在访问路径之后带问号(?)+参数=值的方式发送。
• 请求方法---POST
POST请求是包含数据的,请求数据的格式,可以在HTTP头
Content-Type
中定义。
格式一般会有:
※表单格式:application/x-www-form-urlencoded
※混合格式:multipart/form-data
※JSON格式:application/json
※XML格式:text/xml
※文本:text/plain
表单格式:
与get方式类似,是把所有提交数据放在数据区域。
混合格式:
※文件上传时,可以接受同时提交不同类型的数据
※类型后面一般会跟boundary来告知数据区域分隔符
※每个数据都可以单独说明数据类型
※获取文件时,可以使用相应参数,如
PHP代码如下:
$_FILES["file"]["name"] - 文件名
$_FILES["file"]["type"] - 类型
$_FILES["file"]["size"] - 文件大小
$_FILES["file"]["tmp_name"] - 临时文件路径
• 请求方法---HEAD
HEAD请求就是返回只有头部数据,数据部分不返回内容。返回的内容基本上与GET,POST
的返回头一致。
• 请求方法---OPTIONS
OPTIONS请求,默认情况下会返回服务器允许的请求类型:
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type,
AcceptAccess-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONSAccess
Control-Allow-Credentials: true
• 请求方法---PUT/DELETE
PUT:在特定目录里上传指定文件,文件名在url中设置。
DELETE:删除特定目录里的文件,文件名在url中设置。
HTTP响应
• Location:
作用:Location响应报头用于重定向接受者到一个新的位置。
• Server:
作用:Server 响应报头域包含了服务器用来处理请求的软件信息及其版本。它
和 User-Agent 请求报头域是相对应的,前者发送服务器端软件的信息,后者
发送客户端软件(浏览器)和操作系统的信息。
• Content-Type:
作用:用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什
么编码读取这个文件。
• Set-Cookie:
设置和页面关联的Cookie。
HTTP状态码
• HTTP状态码的作用是:Web服务器用来告诉客户端,发生了什么事。
• HTTP状态码被分为五大类, 目前我们使用的HTTP协议版本1.1, 支持以下的状态码。