1、http请求报文结构和内容
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。
HTTP请求报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组
1).GET
最常见的一种请求方式,当客户端要从服务器中读取文档时,当点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页的,使用的都是GET方式。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?
2).POST
对于上面提到的不适合使用GET方式的情况,可以考虑使用POST方式,因为使用POST方法可以允许客户端给服务器提供信息较多。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。
2、http三次握手和四次挥手
TCP/IP协议是分层的,从底层至应用层分别为:物理层,链路层,网络层,传输层和应用层
TCP的三次握手
第一次握手:
建立连接时,客户端A发生SYN包(SYN=j)到服务器B
并进入SYN_SEND状态,等待服务器B确认
第二次握手:
服务器B收到SYN包,必须确认客户A的SYN,ACK=j+1
同时自己也发送一个SYN包,SYN=k
即,SYN+ACK包,此时服务器进入SYN_RECV状态
第次握手:
客户端A收到服务器B的SYN+ACK包
向服务器B发送确认包ACK(ACK=k+1)
此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手
TCP的四次挥手
客户端A发送一个FIN.用来关闭客户A到服务器B的数据传送(报文段4)
服务器B收到这个FIN. 它发回一个ACK,确认序号为收到的序号+1(报文段5)。和SYN一样,一个FIN将占用一个序号
服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)
客户端A发回ACK报文确认,并将确认序号设置为序号加1(报文段7)
3、HTTP协议
超文本传输协议(Hypertext Transfer Protocol,简称HTTP协议)是应用层协议
HTTP最基本的方法有4种
GET,查,一般用于获取/查询资源信息
GET是向服务器发索取数据的一种请求
安全的,该操作用于获取信息而非修改信息
冪等的,对同一URL的多个请求应该返回同样的结果
GET请求会附在URL之后,就是把数据放置在HTTP协议头中
以?分隔URL和传输数据,参数之间以&相连,空格转换为+,中文字符改为该符号以16进制表示的ASCII
POST,改,一般用于更新资源信息
POST是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为“GET”
实质上,GET和POST只是发送机制不同,并不是一个取一个发!
POST把提交的数据放置在HTTP包的包体中
POST的安全性比GET要高。通过GET提交数据,用户名密码将明文出现在URL上
PUT,增
DELETE,删