网络通讯协议分析

网络通讯协议

什么是网络通讯协议
网络通信协议是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络引提供通信支持,是一种网络通用语言。
简单来说就是通过底层硬件实现各个设备间的通讯

目标:
1.研究数据格式
2.研究协议的阅读和制定、使用
疑问:
1.传输层协议只有tcp和udp吗
答案:推测,两个协议的特性决定,只有可靠,不可靠的区分。(错误,看维基百科)
2.为什么tcp要有三次
答案:建立可靠连接。
客户端:我发数据呢
服务端:恩,你发吧
客户端:好,那我发了。
服务端:(等待接收中)
客户端:(数据发送中)
3.即时通讯为什么不直接用http,而用xmpp等即时通许协议的意义?
数据大小及便捷性,性能。

网络分层

自上而下:应用层,传输层,网络层,链路层和物理层
各层功能:

  1. 物理层:使用物理手段(光纤等)连接主机,并传送0,1电信号
  2. 链路层:给电信号分组(以太网帧),并以广播的方式在子网中传播(每一个接收者比较目标MAC地址和自己的MAC地址可知自己是不是对方要找的人)
  3. 网络层:给主机分配IP地址,判断两个IP是否属于同一子网,是则通过链路层发送,否则交给网关转发,实现了数据从子网A到子网B的传送
  4. 传输层:端到端的通信(以端口来标识,避免了接收主机收到的数据包不知道是哪个进程的)
  5. 应用层:规定应用程序的数据格式,使得通信双方相互理解

网络分层协议(TCP/IP五层模型):
在这里插入图片描述
ISO七层模型(略)

常见协议协议分析:

传输层协议:

TCP TCP协议提供了可靠的面向对象的数据流传输服务的规则和约定。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。

应用层协议:

(1)文本传输协议
1.http:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
 HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
1.0:需要使用keep-alive参数来告知服务器端要建立一个长连接
1.1:默认支持长连接,相比1.0,节约带宽。
2.0:使用了多路复用的技术,使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

2.https:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
3.websocket
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
(2)手机客户端即时通讯协议:
1.xmpp,可扩展通讯和表示协议 (XMPP) 可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议。
2.mqtt,MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器(比如通过Twitter让房屋联网)的通信协议。(物联网协议)
3.socket(tcp,udp)
对比资料:https://blog.csdn.net/androidxiaogang/article/details/51347062
说明:pc等其他介质
插播:socket实现原理和机制
在这里插入图片描述
Socket通信原理简单理解
socket是"打开—读/写—关闭"模式的实现
在这里插入图片描述

绑定ip,绑定端口,
在根据协议发送不同的数据结构:如http就需要进行三次握手建立连接
在这里插入图片描述

(3)自定义协议

插播:数据包(报),帧数
1.1 半包
接受方没有接受到一个完整的包,只接受了部分;
原因:TCP为提高传输效率,将一个包分配的足够大,导致接受方并不能一次接受完。
影响:长连接和短连接中都会出现
1.2 粘包
发送方发送的多个包数据到接收方接收时粘成一个包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。
分类:一种是粘在一起的包都是完整的数据包,另一种情况是粘在一起的包有不完整的包

数据帧(Frame):是一种信息单位,它的起始点和目的点都是数据链路层。
数据包(Packet):也是一种信息单位,它的起始和目的地是网络层
数据报(Datagram):通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。()
数据段(Segment):通常是指起始点和目的地都是传输层的信息单元。
消息(message):是指起始点和目的地都在网络层以上(经常在应用层)的信息单元。

网络层协议:
IP协议:
是网络层中最重要的协议,是整个Internet的协议基础;负责分配IP地址,提供路由;
ARP协议:
地址解析协议,在数据报向下一个站点传递时,负责将IP地址转换为物理地址;
RARP协议:
反向地址转化协议,作用于ARP相反,负责将物理层地址转换为IP地址;
ICMP协议:
(Internet Control Message Protocol)是Internet控制消息协议,用于在IP主机、路由器之间传递控制消息。
IGMP协议:
(Internet Group Management Protocol),网络组管理协议。主要用于建立和管理多播组,对IP分组广播进行控制。
这里罗列大部分是IPv4相关的,IPv6研究将放入下一期

协议阅读:
搜索网站:https://everyrfc.org/
http协议:
工作组:https://httpwg.org/specs/
RFC7231:https://httpwg.org/specs/rfc7231.html
语义和内容
RFC7230:https://httpwg.org/specs/rfc7230.html#introduction
消息语法和路由
在这里插入图片描述
Obsoletes:淘汰/替换
Updates: 更新/补充

xmpp协议:
官网:https://xmpp.org/
mqtt协议:

直观比较,发送内容相同内容,对比大小:
http:
在这里插入图片描述
xmpp:
参考:
https://github.com/jiangzehui/xmpp
xmpp产品:http://rm.rooyeetone.com/

mqtt:
测试地址:http://www.tongxinmao.com/txm/webmqtt.php
在这里插入图片描述
在这里插入图片描述
socket:
在这里插入图片描述
抓取软件参考:
https://www.cnblogs.com/huanxiyun/articles/6553440.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值