应用层自定制协议+HTTP协议

子定制协议解决tcp粘包问题

1.定长包头+数据(有效载荷)+分隔符

2.定长包头当中可以获得当前有效数据长度,分隔符可以找到下一条数据的起始位置(下条数据的包头)

3.分隔符不一定是一个字节的字符,可以是一个字符串,通常为\r\n

4.分隔符起到了一个定义数据边界的作用

 

结构传输

序列化:将对象转化为字节序列的过程

    send(sockfd, Data, sizeof(Data));

反序列化:将字节序列转化为对象的过程

    read(sockfd, buf, sizeof(Data)-1);

 

HTTP协议:超文本传输协议

    URL:http://user:passwd@www.baidu.com:80/dir/index.thm?id=2&yk=C%2B%2B#ch1

     1.http://  :  协议方案名

     2.用户名和密码

     3.域名(服务器的ip地址)

     4.服务端侦听端口

     5.带层次的文件路径:浏览器要请求的资源路径  '/'是http服务器定义逻辑上的根目录

     6.查询字符串:浏览器给服务器提交的数据

           6.1提交单个数据是按照key=value形式,多个数据中间用&进行分割

           6.2在提交数据时如果不加以区分,可能造成分歧,在传输特殊字符时需要url编码(urlencode),编码方式采用16进制,

                为了区分编码后的字符需要在前面加上%

          6.3对于服务器,收到url编码之后进行字符串查找,需要进行url解码(urldecode)

     7.片段标识符:表示当前页面被浏览器加载之后,定位到什么位置了。

  http协议格式:

    请求

       请求首行

             请求方法url协议版本\r\n

      请求头部

          每行数据key:value形式,用\r\n分隔

          Content-Length:正文长度,防止粘包

          Content-Type:正文编码格式

                 text/html:HTML格式    application.json:json数据格式

                 text/plain:纯文本格式     application/msword:word格式

                 text/png:png图片格式

          referer:当前的页面从那个页面跳转过来

          Cookie:向服务器提交浏览器本地保存的认证信息

          Tranfer-Encoding:针对与正文,可以支持分块传输

          Lacation:和重定向搭配使用

          \r\n

          正文

     响应

         相应首行

             协议版本 状态码 状态解释\r\n

             状态码:

                 1xx:结束请求正在处理

                 2xx:请求处理完毕

                 3xx:重定向状态, 表示浏览器需要进行附加操作,才能完成刚才的请求操作302:临时重定向

                 4xx:服务器无法处理这个请求 404:Page Not Found

                 5xx:服务器处理请求出错了 502 Bad Gateway

        响应头部

             响应头部

              \r\n

             正文

 

请求方法

   GET:从服务器上面获取一个资源的方法

       1.GET并不是只能向服务器获取资源,其实也可以在查询字符串提交数据到浏览器

       2.GET请求数据都是在url当中

  POST:向服务器提交数据的方法

       1.POST提交数据是在正文当中

  POST方法比GET方法更加私密

 

1.http协议是应用层协议,在传输层使用TCP协议,在网络层使用ip协议

2.http本身是为了处理大量请求,设计在传输层使用tcp短链接

3.目前http已经支持了长连接

4.http是没有加密版本的http协议,加密版本可以使用https

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值