Http、TCP/IP、UDP 协议栈

所谓协议就是大家一起遵守的规范格式,不应单独的去理解一章节的知识点,如把一章一章串成知识流和故事,人习惯和依赖以故事的形式记忆,有人能记住π小数位的几百位 是因为他把0到9具体化成10个人 串成他们故事流来记的。


网络流由下往上分为:

物理层 

数据链路层           硬件驱动、NIC

网络层                  IP协议

传输层                 TCP(传输控制协议)、UDP(用户数据报协议)

会话层

应用层和表现层     HTTP协议,FTP(文件传送协议),DNS(域名系统)


一、生成HTTP请求消息

   1.  从在浏览器输入网址开始。网址,准确来算是URL(Uniform Resource Locator 统一资源定位符),如以http://  ftp:  file : 开头

    浏览器第一步做的是对URL进行解析,从而生成发送给Web服务器

    URL拆分

   ftp://   +  user:passowrd  +  @ftp.shenbnnc.com:+  21  +/dir/test.html   用户名(可省略)+密码(可省略)+FTP服务器+端口号(可省略)+文件的路径

  http://  +  user:passowrd  +  @ www.cmbc.com.cn:+8080+ /site/index.html  用户名(可省略)+密码(可省略)+Web服务器+端口号(可省略)+文件的路径

2.对URL进行解析之后,浏览器确定了We服务器和文件名,接下来就是跟进这些信息生成HTTP请求消息

 请求消息=                   方法                     +           URI(统一资源标识符)

                           “进行什么样的操作”      +           “对什么”

  (a)请求消息

GET /Sample.htm HTTP/1.1 Accept: */* Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Host: www.google.cn Connection: Keep-Alive 第一行为请求行 来说明资源 第二部分为消息头 用于表示请求的附加信息 第三部分为消息体 可为空,包含客户端向服务器发送的数据,如POST方法提交表单数据 
(b)响应消息


HTTP/1.1 200 OK Date: Mon, 24 Seven 2017 05:07:21 GMT Content-Type: text/html; charset=UTF-8       第一行状态行 1XX 告知请求进度,2XX 成功, 3XX 需进一步操作 , 4XX 资源不存在, 5XX 服务器错误 还有就是消息头,和消息体及服务器向客户端发送的数据 

3.生成HTTP消息之后,接下来需要委托操作系统讲消息发送给Web服务器,浏览器本身不具备讲消息发送网络的功能。

  在委托操作系统发消息是,必须提供IP地址而不是域名,因此得向DNS服务器查询Web服务器的IP地址,及调用Socket一个程序组件

。同样发送数据也得需要Socket多个程序组件,大致分为4个阶段:

   a)创建套接字         创建

  b)讲管道连接到服务器端的套接字上     连接

  c)收发数据            通信

  d)断开管道并删除套接字     断开

<描述符> =socket(,<流模式>,...) conent(<描述符>,<服务器的IP地址和端口号>); write(<描述符>,<发送数据>,<数据长度>); <数据长度>=read<<描述符>,<接收缓冲区> colse.(<描述符>); ..

Http、TCP/IP、UDP 协议栈_第1张图片


下班   待待待..............................

  




 


你可能感兴趣的:(web)