网络通信

对于Socket通信,只要大概的了解通信协议就可以了

  • 网络之间传输数据需要协议。所谓协议呢,就是一些的规定,这些规定就是为了减少资源浪费来达成的一个统一的标准。
  • 网络七层:应用层、表示层、会话层、传输层、网络层、链路层、物理层;
  • 网络五层:应用层、传输层、网络层、链路层、物理层。
  • 一般因特网现在都是用的五层协议,把表示层与会话层的功能都交给了具体的应用程序来执行。做为开发人员我们主要要做的就是应用层,也就是应用程序这一层。
  • 物理层:  建立、维护、断开物理连接 处理bit流
  • 数据链路层,将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正 处理数据帧 Frame
  • 网络层,进行逻辑地址寻址,实现不同网络之间的路径选择 处理包packet  IP协议就是运行在这一层
  • 传输层, 定义传输数据的协议端口号,以及流控和差错校验 处理数据段 segment TCP,UDP运行在这一层,TCP(传输控制协议):面向连接的、可靠(应用:ftp、smtp、http等都是基于TCP协议的);UDP(用户数据报协议):无连接的、不可靠的(数据报)的应用,比如视频会议、网络电话、DNS解析,其速度快,能容忍部分数据丢失
  • 会话层,  建立、管理、终止会话。(在五层模型里面已经合并到了应用层)对应主机进程,指本地主机与远程主机正在进行的会话
  • 表示层 数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)格式有,JPEG、ASCll、DECOIC、加密格式等
  • 应用层, 网络服务与最终用户的一个接口 , HTTP POP3 SMTP FTP MQTT WEBSOCKET

端口:是计算机虚拟出来的一个数字,用来区分不同的进程,范围是0-65535之间,主要分为以下三类:

  • 公认端口:从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如80端口实际上总是http通讯;
  • 注册端口:从1024到49151。它们松散地绑定于一些服务(某些大公司的某些软件,sun公司某个系统的某个服务等)。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如许多系统处理动态端口从1024左右开始;
  • 动态或私有端口:从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外,比如Sun的RPC端口从32768开始的。

使用netstat -a -n (-a显示所有的端口,-n以数字形式显示)

使用Socket通信过程

  • 服务器端Server:

  1.创建Socket对象;Socket()
  2.绑定IP与端口;Bind()
  3.监听;Listen()
  4.接收,得到一个代理;Accept()
  5.通过代理进行通信;Receive或Send

  • 客户端Client:

  1.创建Socket对象;Socket()
  2.连接;Connect()
  3.通信;Receive或Send
  4.关闭释放;Shutdown或Close

物联网常见通讯协议

原文地址:https://www.cnblogs.com/kerwincui/p/9579342.html