读书人

1、TCP/IP 协议介绍-转

发布时间: 2012-10-06 17:34:01 作者: rapoo

一、TCP/IP 协议介绍-转

?

从应用层至物理层,数据是一层层封装,封装的方式一般都是在原有数据的前面加一个数据控制头,数据封装格式如下:

?

1、TCP/IP 协议介绍-转

?

其中,对于TCP传输协议,客户端在于服务器建立连接前需要经过TCP三层握手,过程如下:

?

1、TCP/IP 协议介绍-转

?

二、HTTP协议

2.1 简介

超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议,自 1990 年起,HTTP 就已经被应用于 WWW 全球信息服务系统。
HTTP 是一种请求/响应式的协议。一个客户机与服务器建立连接后,发送一个请求给服务器;服务器接到请求后,给予相应的响应信息。
HTTP 的第一版本 HTTP/0.9是一种简单的用于网络间原始数据传输的协议;
HTTP/1.0由 RFC 1945 定义 ,在原 HTTP/0.9 的基础上,有了进一步的改进,允许消息以类 MIME 信息格式存 在,包括请求/响应范式中的已传输数据和修饰符等方面的信息;
HTTP/1.1(RFC2616) 的要求更加严格以确保服务的可靠性,增强了在HTTP/1.0 没有充分考虑到分层代理服务器、高速缓冲存储器、持久连接需求或虚拟主机等方面的效能;
安全增强版的 HTTP (即S-HTTP或HTTPS),则是HTTP协议与安全套接口层(SSL)的结合,使HTTP的协议数据在传输过程中更加安全。

?

2.2 协议结构

HTTP协议格式也比较简单,格式如下:

?

?

1、TCP/IP 协议介绍-转

?

2.3 HTTP 协议举例

下面是一个HTTP请求及响应的例子:

1、TCP/IP 协议介绍-转

?

2.4 请求头格式

a) 通用头(general-header):
Cache-Control:客户端希望服务端如何缓存自己的请求数据,如"Cache-Control: no-cache","Cache-Control: max-age=0";
Connection:客户端是否希望与服务端之间保持长连接,如"Connection: close", "Connection: keep-alive";
Date:只有当请求方法为POST或PUT方法时客户端才可能会有些字段;
Pragma:包含了客户端一些特殊请求信息,如 "Pragma: no-cache" 客户端希望代理或应用服务器不应缓存与该请求相关的结果数据;
Via:一般用在代理网关向应用服务器发送的请求头中,表明该来自客户端的请求经过了网关代理,
???? 格式为:"Via: 请求协议版本? 网关标识?? [其它信息] ",
???? 如 :" Via: 1.1? webcache_250_199.hexun.com:80 (squid)"

?

b) 请求头(request-header):
Accept:表明客户同端可接受的请求回应的媒体类型范围列表。星号“*”用于按范围将类型分组,用“*/*”指示可接受全部类型;用“type/*”指示可接受type类型的所有子类型,如“ Accept: image/gif, image/jpeg, */*”;
Accept-Charset:客户端所能识别的字符集编码格式,格式:“Accept-Charset: 字符集1[:权重],字符集2[:权重]”,如:“ Accept-Charset: iso-8859-5, unicode-1-1;q=0.8”;
Accept-Language:客户端所能识别的语言,格式:“Accept-Language: 语言1[:权重],语言2[:权重]”,如:” Accept-Language: zh, en;q=0.7”;
Host:客户请求的主机域名或主机IP,格式:“Host: 域名或IP[:端口号]”,如:“Host: www.hexun.com:80“,请求行中若有HTTP/1.1则必须有该请求头;
User-Agent:表明用户所使用的浏览器标识,主要用于统计的目的;
Referer:指明该请求是从哪个关联连接而来;

?

2.8)HTTP 请求方法

GET、POST、HEAD、CONNECT、PUT、DELETE、TRACE

?

2.9)举例

a)GET请求

Html代码
    GET?http://photo.test.com/inc/global.js?HTTP/1.1??Host:?photo.test.com??User-Agent:?Mozilla/5.0?(Windows;?U;?Windows?NT?5.0;?zh-CN;?rv:1.8.1)?Gecko/20061010?Firefox/2.0??Accept:?text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5??Accept-Language:?en-us,zh-cn;q=0.7,zh;q=0.3??Accept-Encoding:?gzip,deflate??Accept-Charset:?gb2312,utf-8;q=0.7,*;q=0.7??Keep-Alive:?300??Proxy-Connection:?keep-alive??Cookie:?ASP.NET_SessionId=ey5drq45lsomio55hoydzc45??Cache-Control:?max-age=0??
GET http://photo.test.com/inc/global.js HTTP/1.1Host: photo.test.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3Accept-Encoding: gzip,deflateAccept-Charset: gb2312,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Proxy-Connection: keep-aliveCookie: ASP.NET_SessionId=ey5drq45lsomio55hoydzc45Cache-Control: max-age=0

?

b)POST请求

Html代码
    POST?/?HTTP/1.1??Accept:?image/gif,?image/x-xbitmap,?image/jpeg,?application/vnd.ms-powerpoint,?application/msword,?*/*??Accept-Language:?zh-cn??Content-Type:?application/x-www-form-urlencoded??Accept-Encoding:?gzip,?deflate??User-Agent:?Mozilla/4.0?(compatible;?MSIE?6.0;?Windows?NT?5.0)??Host:?www.test.com??Content-Length:?24??Connection:?Keep-Alive??Cache-Control:?no-cache????name=value&submitsubmit=submit??
POST / HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, application/vnd.ms-powerpoint, application/msword, */*Accept-Language: zh-cnContent-Type: application/x-www-form-urlencodedAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)Host: www.test.comContent-Length: 24Connection: Keep-AliveCache-Control: no-cachename=value&submit=submit

?

c)通过HTTP代理发送GET请求

Html代码
    GET?http://mail.test.com/?HTTP/1.1??Host:?mail.test.com??User-Agent:?Mozilla/5.0?(Windows;?U;?Windows?NT?5.0;?zh-CN;?rv:1.8.1)?Gecko/20061010?Firefox/2.0??Accept:?text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5??Accept-Language:?en-us,zh-cn;q=0.7,zh;q=0.3??Accept-Encoding:?gzip,deflate??Accept-Charset:?gb2312,utf-8;q=0.7,*;q=0.7??Keep-Alive:?300??Proxy-Connection:?keep-alive??
GET http://mail.test.com/ HTTP/1.1Host: mail.test.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3Accept-Encoding: gzip,deflateAccept-Charset: gb2312,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Proxy-Connection: keep-alive

?

d)POST方式上传文件

Html代码
    POST?http://www.test.comt/upload_attach?uidl=%3C?HTTP/1.1??Host:?www.test.com??User-Agent:?Mozilla/5.0?(Windows;?U;?Windows?NT?5.0;?zh-CN;?rv:1.8.1)?Gecko/20061010?Firefox/2.0??Accept:?text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5??Accept-Language:?en-us,zh-cn;q=0.7,zh;q=0.3??Accept-Charset:?gb2312,utf-8;q=0.7,*;q=0.7??Content-Type:?multipart/form-data;?boundary=---------------------------5169208281820??Content-Length:?449????-----------------------------5169208281820??Content-Disposition:?form-data;?name="file_1";?filename=""??Content-Type:?application/octet-stream??????-----------------------------5169208281820??Content-Disposition:?form-data;?name="file_0";?filename="test.txt"??Content-Type:?text/plain????hello?world!????-----------------------------5169208281820??Content-Disposition:?form-data;?name="oper"????upload??-----------------------------5169208281820--??
POST http://www.test.comt/upload_attach?uidl=%3C HTTP/1.1Host: www.test.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7Content-Type: multipart/form-data; boundary=---------------------------5169208281820Content-Length: 449-----------------------------5169208281820Content-Disposition: form-data; name="file_1"; filename=""Content-Type: application/octet-stream-----------------------------5169208281820Content-Disposition: form-data; name="file_0"; filename="test.txt"Content-Type: text/plainhello world!-----------------------------5169208281820Content-Disposition: form-data; name="oper"upload-----------------------------5169208281820--

?

e)CONNECT举例

Html代码
    CONNECT?mail.test.com:80?HTTP/1.1??User-Agent:?Mozilla/5.0?(Windows;?U;?Windows?NT?5.0;?zh-CN;?rv:1.8.1)?Gecko/20061010?Firefox/2.0??Proxy-Connection:?keep-alive??Host:?mail.test.com:80??
CONNECT mail.test.com:80 HTTP/1.1User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0Proxy-Connection: keep-aliveHost: mail.test.com:80

?

3.0)在终端以 telnet 方式测试

a)打开回显功能(针对windows)
Windows 2000:进入DOS模式->输入 telnet->set LOCAL_ECHO->退出:quit->telnet ip 80
Windows xp:进入DOS模式->输入telnet->set local echo->open ip 80
b) 按HTTP协议格式输入GET请求、HEAD请求、POST请求。

读书人网 >互联网

热点推荐