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

<html>
      <head></head>
      <body>
            <!--body goes here-->
      </body>
</html>

第一行状态行 1XX 告知请求进度,2XX 成功, 3XX 需进一步操作 , 4XX  资源不存在, 5XX 服务器错误 

还有就是消息头,和消息体及服务器向客户端发送的数据



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

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

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

   a)创建套接字         创建

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

  c)收发数据            通信

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

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



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

  




 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值