
它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。
现在的 TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。

TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中占用举足轻重的地位。

HTTP是超文本传输协议的缩写,是基于TCP/IP通信协议来传输数据。
HTTP1.1新增
* 默认情况下,可以关闭一个连接connection,也可以配置它不可以关闭一个连接。
stream方式: 每次服务端数据传送不会关闭连接,连接只会在通信出现错误时,或是连接重建时关闭(一些防火墙常被设置为丢弃过长的连接, 服务器端可以设置一个超时时间, 超时后通知客户端重新建立连接,并关闭原来的连接)。
7)、fin_wait2:主动关闭端接到ack后,就进入了 fin-wait-2 ./* connection is closed, and the socket is waiting for a shutdown from the remote end. 从远程tcp等待连接中断请求 */。
生产者消费者模式,一个线程单独负责从socket上accept,它收到新连接后,加锁放入公共buffer,若干个工作线程加锁从公共buffer上取得连接,加入自己的epoll等待集中,等待一定的时间,有数据则进行收发,没数据继续从公共buffer上取连接,但是这里并不适用程间用条件变量通知,因为即使公共buffer上没有新连接,工作线程也不应该等待accept线程通知,而是应立即用epoll wait自己已有的连接。
HOST域,且必须传送,不传送会报400错误
Range域,表示只请求资源的一个部分,其值为请求的长度范围或位置,即可以据此实现断点续传功能,服务器增加了Content-Range标明了这次传送的范围和总长度。
Cache-Control域,针对的是HTTP1.0 Expire由于服务器和客户端时间不一致导致的问题
HTTP2将新增
多路复用请求;
对请求划分优先级;
压缩HTTP头;
特点
无状态,所以应答快。
HTTP1.0使用非持续连接,HTTP1.1使用持续连接,一个连接可以传送多个Web对象。HTTP1.0只有GET、POST、HEAD三种请求类型,其他请求都是HTTP1.1新增的。
HTTP工作流程
一般为四个步骤:
用户点击超链接或浏览器直接访问
客户端主动向服务器建立TCP连接并发送Request给服务器
服务器接收请求并发送Response给客户端,若connection模式为close则立即关闭TCP,若为Keepalive则会等待一段时间再关闭
客户端接收消息并显示
HTTP之Request
Request报文分为四个部分:
第一部分:请求行,包括请求类型,URI,协议版本
第二部分:请求头部,用来说明服务端要使用的附加信息,如HOST,User-Agent,Content-Type、Content-Length、Accept,Refer,Accept-Encoding,Accept-Language
第三部分:空行 第四部分:正文
HTTP之Response
Response报文分为四个部分:
第一部分:响应行,包括协议版本,状态码,状态消息
第二部分:响应头部,用来说明客户端要使用的附加信息,如Date,Content-Type、Content-Length 第三部分:空行 第四部分:正文
HTTP之状态码
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-89214-1.html
我也要去追求去了哈哈
谁也不傻
学术界和网上众说纷纭