网络-协议详解---HTTP/UDP

TCP/IP四层模型:

应用层、传输层、网络层、链路层

应用层(程序员自己定义)

功能:负责应用程序之间的数据沟通

自定制协议:

    网络版计算器:客户端发送两个数字以及一个运算符到服务器,服务端进行计算打印结果

    序列化:将数据对象按照指定的协议在内存中排列成为可持久化存储/数据传输时的二进制数据串

    反序列化:将持久化存储/数据传输获取到的二进制数据串按照指定的协议解析得到对象数据

知名协议:http协议(超文本传输协议)

HTTP协议

URL:俗称的“网址”,统一资源定位符

协议方案://用户名:密码@服务器IP地址:端口/资源路径?查询字符串#片段标识符

URL编码/解码:为什么要编码?如何编码?如何解码?

在URL中,必须先对特殊字符进行转义

转义规则:

将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每两位做一位,前面加上%,编码成%XY格式

例:“+”被转义成了“%2B”

HTTP协议格式:

首行:

1.请求首行:请求方法+URL+协议版本

    请求方法:GET/POST   GET请求没有正文,提交的数据在URL中;POST提交的数据在正文中

    URL:请求资源路径

    协议版本:0.9/1.0/1.1/2-->调研版本之间的新增特性

2.响应首行:协议版本+响应状态码+状态码描述信息

    响应状态码:1**/2**/3**/4**/5**

头部:

  以一个个 key:val 的键值对组成,并且键值对之间以/r/n进行间隔

  Content-Length(正文长度)/Content-Type(正文类型)/Location(重定向)/Referer/Transfer-Encoding/Cookie/Set-Cookie 

空行:间隔头部与正文

正文:传递的数据

传输层

负责端与端之间的数据传输:TCP/UDP

端口:unit16_t   0-65535  

          注意:0-1023 不推荐使用

端口号标识了一个主机上进行通信的不同的应用程序

知名端口号:

UDP:

特性:无连接、不可靠、面向数据报

协议端格式:

  • 无连接:只需要知道对端的地址信息,就可以直接发送数据,但是数据不保证可靠到达
  • 面向数据报:用户(sendto)给多少数据就一次传输多少数据
  • 协议字段:16源/目的端口,16位数据报长度,16位校验和
  • 16位数据报长度,限制了一个UDP协议发送的数据最大长度不能大于64K-8;一但超过,则发送失败。因此,若数据长度大于64k-8,则需要用户在应用层进行分包操作。
  • UDP不保证数据有序到达,需要用户在应用层进行包序管理  
  • UDP面向数据报:数据都是整条接收,不会出现接收半条数据的情况,数据是整条交付


 

   

   

发布了46 篇原创文章 · 获赞 16 · 访问量 3026

猜你喜欢

转载自blog.csdn.net/weiluyu1225/article/details/93714957
今日推荐