HTTP
HTTP协议
Content-Type指示响应的内容,浏览器依靠其判断响应的内容是网页还是图片。
HTTP使用URI来传输数据和建立连接。
URI是统一资源标识符,URL是统一资源定位符,URI分为URL和URN,统一资源名称。
URL
一个完整的URL包括以下几个部分
http://www.enjoyedu.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
- 协议部分:该URL的协议部分是http:
- 域名部分:该URL的域名为:www.enjoyedu.com。一个URL中,也可以使用IP地址作为域名使用 。
- 端口部分:跟着域名后的是端口,如果省略,使用默认端口。
- 虚拟目录,第一个/开始到最后一个/为止。
- 文件名部分,从最后一个/到?为止。本域名为index.asp
- 锚部分:从#到最后,本域名为name
- 参数部分,从?到#之间的部分。
一次完整的http请求过程
- 进行DNS域名解析(先从本地浏览器缓存,操作系统缓存或DNS服务器中查找)
- 建立TCP连接,三次握手
- 客户端向服务器发送请求命令
如:GET/sample/hello.jsp HTTP/1.1 - 客户端发送请求头信息
发送请求命令后,还需要以头信息的形式向服务器发送一些别的信息。之后客户端发送了一行空白行来通知服务器,已经结束了该头信息的发送。 - 服务器应答
如HTTP/1.1 200 OK - 服务器返回响应头信息
- 服务器向客户端发送数据
会发送一个空白行来表示头信息的发送到此为结束,接着,以Cotent-Type响应头信息所描述的格式发送用户所请求的实际数据。 - 服务器关闭TCP连接
如果客户端或服务器在头信息中加入了Connection:keep-alive,TCP将保持长连接,节约了新连接所需的时间,还节约的网络带宽。
HTTP协议报文结构
请求报文结构:
响应报文结构:
UDP协议
UDP是面向无连接的通讯协议,包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
其和TCP位于同一层,但不管数据包的顺序,错误和重发,因此主要用于面向查询,应答的服务,相比ftp或Telnet,这些服务需要交换的信息量较小。
TCP侧重于可靠传输。
UDP侧重于高速传输和实时性要求较高的通信。