玩转Socket,你还是要懂这些概念

[复制链接]

下载APP可以快速和圈友联系

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
7层收集模子-OSI
    根本层:物理层(Physical)、数据链路层(Datalink)、收集层(Network)传输层(Transport):TCP-UDP协议层、Socket高级层:会话层(Session)、暗示层(Presentation)、利用层(Application)

玩转Socket,你还是要懂这些概念-1.jpg


玩转Socket,你还是要懂这些概念-2.jpg

Socket
    简单来说是IP地址与端口的连系协议(RFC793)一种地址与端口的连系描写协议TCP/IP协议的相关API的总称;是收集Api的调集实现涵盖了:Stream Socket/Datagram Socket感化:
  • 在收集传输中用于唯一标示两个端点之间的链接
  • 端点:包括(IP+Port)
  • 4个要素:客户端地址、客户端端口、办事器地址、办事器端口TCP
  • TCP是面向毗连的通讯协议
  • 经过三次握手建立毗连,通讯完成时要撤除毗连
  • 由于TCP是面向毗连的所以只能用于端到真个通讯UDP
  • UDP是面向无毗连的通讯协议
  • UDP数据包括目标端口号和源端口号信息
  • 由于通讯不需要毗连,所以可以实现广播发送,并不范围于端到端TCP/IP协议中,两个进程间通讯的首要形式为:CS模子首要目标:协同收集合的计较机资本、办事形式、进程间数据同享常见的:FTP、SMTP、HTTP

Demo(略)
    构建TCP客户端、办事端客户端发送数据办事器读取数据并打印

报文、协议、Mac地址

  • 报文报文段是指TCP/IP协议收集传输进程中,起着路由导航感化
  • 用以查询各个收集路由网段、IP地址、交换协议等IP数据包
  • 报文段充任全部TCP/IP协议数据包的导航线由功用
  • 报文在传输进程中会不竭地封装成份组、包、帧来传输
  • 封装方式就是增加一些控制信息组成的首部,即报文头
  • 传输协议协议望文生义,一种规定,约束
  • 约定大于设置,在收集传输中仍然适用;收集的传输流程是硬朗的稳定的,得益于根本的协议组成
  • 简单来说:A->B的传输数据,B能识别,反之B->A的传输数据A也能识别,这就是协议
  • Mac地址Media Access Control大概Medium Access Control
  • 意译为媒体拜候控制,或称为物理地址、硬件地址
  • 用来界说收集装备的位置
  • 形如:44-45-53-54-00-00;与身份证类似

IP,端口,远程办事器
    互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(英语:IPAddress)是分派给收集上利用网际协议(英语:Internet Protocol,IP)的装备的数字标签常见的IP地址分为IPV4与IPv6两大类IP地址由32位二进制数组成,常以XXX.XXX.XXX.XXX形式表示,每组XXX代表小于或即是255的10进制数如:208.80.152.2分为A、B、C、D、E五大类,其中E类属于特别保存地址IPV4
  • 总数目:4,294,967,296个(即232):42亿个;终极于2011年2月3日用尽
  • 假如主机号是全1,那末这个地址为间接广播地址
  • IP地址“255.255.255.255"为受限广播地址IPV6
  • 总共有128位长,IPV6地址的表达形式,一般采用32个十六进制数。也可以设想为1632个
  • 由两个逻辑部分组成:一个64位的收集前缀和一个64位的主机地址,主机地址凡是按照物理地址自动天生,叫做EUI-64(大概64-位扩大唯一标识)
  • 2001:0db8:85a3:0000:1319:8a2e:0370:7344
  • IPv4转换为IPv6一定可行,IPv6转换为IPv4纷歧定可行
  • 端口假如把IP地址比作一间屋子,端口就是收支这间屋子的门大概窗户
  • 在分歧门窗户后有分歧的人,屋子中的用户与外界交换的出口
  • 外界鸽子(信息)飞到分歧窗户也就是给分歧的人传递信息0到1023号端口以及1024到49151号端口都是特别端口

玩转Socket,你还是要懂这些概念-3.jpg


  • 计较机之间依照互联网传输层TCP/IP协议的协议通讯,分歧的协议都对应分歧的端口49152到65535号端口属于“静态端口”范围,没有端口可以被正式地注册占用

玩转Socket,你还是要懂这些概念-4.jpg


玩转Socket,你还是要懂这些概念-5.jpg


  • UDP英语:User Datagram Protocol,缩写为UDP
  • 一种用户数据报协议,又称用户数据报文协议
  • 是一个简单的面向数据报的传输层协议,正式标准为RFC 768
  • 用户数据协议、非毗连协议
  • 不成靠它一旦把利用法式发给收集层的数据发送进来,就不保存数据备份
  • UDP在IP数据报的头部仅仅加入了复用和数据校验(字段)
  • 发送端生产数据,接收端从收集合抓取数据
  • 结构简单、无校验、速度快、轻易丢包、可广播
  • DNS、TFTP、SNMP
  • 视频、音频、普通数据(无关紧急数据)

玩转Socket,你还是要懂这些概念-6.jpg



  • UDP包最大长度16位->2字节存储长度信息
  • 2^16-1=64K-1=65536-1=65535
  • 本身协议占用:32+32位=64位=8字节
  • 65535-8=65507 byte

UDP Api
    DatagramSocket
  • 用于接收与发送UDP的类
  • 负责发送某一个UDP包,大概接收UDP包
  • 分歧于TCP,UDP并没有合并到Socket APl中
  • 没有办事器端和客户端
  • DatagramSocket)建立简单实例,不指定端口与IP
  • DatagramSocket(int port)建立监听牢固端口的实例(接收数据的端口)
  • DatagramSocket(int port,InetAddress localAddr)建立牢固端口指定lP的实例(当计较机有多个IP地址存在时)
  • receive(DatagramPacket d):接收
  • send(DatagramPacket d):发送
  • setSoTimeout(int timeout):设备超时,毫秒
  • close() 封闭,开释资本DatagramPacket(bytel] bufint offset,int length,InetAddress address,int port)
  • 前面3个参数指定buf的利用区间
  • 前面2个参数指定方针机械地址与端口(仅仅在发送时有用)
  • SocketAddress相当于InetAddress+Port
  • setData(bytel[] bufint ofset,int length)
  • setData(bytel[l buf)
  • setLength(int length)
  • getData()、getOffset()、getLength()
  • setAddress(InetAddress iaddr)、setPort(int iport) 发送时有用,接收时set操纵是由系统完成的
  • getAddress()、getPort()
  • setSocketAddress(SocketAddress address)
  • getSocketAddress()

UDP单播、广播、多播
    高频次广播有能够致使局域网大概某段收集的信息带宽被占满

玩转Socket,你还是要懂这些概念-7.jpg

IP地址种别

玩转Socket,你还是要懂这些概念-8.jpg


  • 广播地址255.255.255.255为受限广播地址
  • C网广播地址通常是:XXX.XXX.XXX.255(192.168.1.255)D类IP地址为多播预留

玩转Socket,你还是要懂这些概念-9.jpg


  • ipv4的地址原本就是用32位来暗示的,分红4个8位来誊写, 所以ipv4和地址是可以和32位unsigned int广播地址运算
  • IP:192.168.124.7
  • 子网掩码:255.255.255.0
  • 收集地址:192.168.124.0
  • 广播地址:192.168.124.255
  • 例子二
  • IP:192.168.124.7
  • 子网掩码:255.255.255.192
  • 收集地址:192.168.124.0
  • 广播地址:192.168.124.63
  • 255.255.255.192->11111111.11111111.11111111.11000000
  • 可分别网段:2/2=4个
  • 0~63、64~127、128~191、192~255
  • 192.168.124.63

广播通讯题目
    主机一:192.168.124.7,子网掩码:255.255.255.192主机二:192.168.124.100,子网掩码:255.255.255.192主机一广播地址:192.168.124.63主机二广播地址:192.168.124.127由于两个主机的广播地址分歧,所以相互收不到对方的消息

局域网搜索Demo(略)
    UDP接收消息并回送功用实现UDP局域网广播发送实现UDP局域网回送消息实现

TCP(Transmission Control Protocol)
    TCP是传输控制协议;是一种面向毗连的、牢靠的、基于字节省的传输层通讯协议,由IETF的RFC793界说与UDP一样完成第四层传输层所指定的功用与职责三次握手、四次挥手具有校验机制、牢靠、数据传输稳定

玩转Socket,你还是要懂这些概念-10.jpg


    感化
  • 聊天消息传输、推送
  • 单人语音、视频聊天等
  • 几近UDP能做的都能做,但需要斟酌复杂性、性能题目
  • 限制:没法停止广播,多播等操纵

TDP Api
    socket():建立一个Socketbind):绑定一个Socket到一个当地地址和端口上connect():倡议毗连,毗连到远程套接字accept():接管一个新的毗连,阻塞期待write():把数据写入到Socket输出流read():从Socket输入流读取数据

玩转Socket,你还是要懂这些概念-11.jpg



玩转Socket,你还是要懂这些概念-12.jpg



作者:侠客岛的浅笑

链接:https://www.imooc.com/article/267689
温馨提示:
好向圈www.kuaixunai.com是一个专业经验分享交流平台,你可以在这里发布专业经验,也可以发布需求与服务,禁止带推广链接、联系方式、违法词等,违规将封禁账号。 下载好向圈APP可以随时随地交流经验,也可以和圈友发起聊天成为好友哦!
如果想要各大搜索引擎收录,请使用秘塔写作猫进行内容伪原创
回复

使用道具 举报

已有(20)人评论

跳转到指定楼层
俺老孙去也荡 发表于 2020-5-24 03:20:49
总结的非常好,你以为你图文并茂,我就能看下去?
回复

使用道具 举报

敢为医者言露 发表于 2020-5-24 03:24:45
Mark
回复

使用道具 举报

平凡的人2017 发表于 2020-5-24 03:29:45
不错
回复

使用道具 举报

无名小卒582 发表于 2020-5-24 03:34:22
转发了
回复

使用道具 举报

别糊涂爱钙 发表于 2020-5-24 03:41:03
转发了
回复

使用道具 举报

天银者险 发表于 2020-5-24 03:45:07
转发了
回复

使用道具 举报

123472939 发表于 2020-5-24 03:49:27
转发了
回复

使用道具 举报

o3o咚咚锵 发表于 2020-5-24 03:55:34
转发了
回复

使用道具 举报

卍花落花开 发表于 2020-5-24 04:00:45
转发了
回复

使用道具 举报

你永远不懂我淹 发表于 2020-5-24 04:05:51
转发了
回复

使用道具 举报

半醒温柔醒z 发表于 2020-5-24 04:07:18
转发了
回复

使用道具 举报

最爱楚苏楼等 发表于 2020-5-24 04:12:21
转发了
回复

使用道具 举报

方站说简 发表于 2020-5-24 04:16:45
转发了
回复

使用道具 举报

铁麒麟腰牌 发表于 2020-5-24 04:22:22
转发了
回复

使用道具 举报

也劫个色淘 发表于 2020-5-24 04:26:17
转发了
回复

使用道具 举报

123473618 发表于 2020-5-24 04:31:29
转发了
回复

使用道具 举报

不戒大包佣 发表于 2020-5-24 04:35:31
转发了
回复

使用道具 举报

沉卓豪 发表于 2020-5-24 04:41:16
转发了
回复

使用道具 举报

琴韵未尽未d 发表于 2020-5-24 04:42:31
转发了
回复

使用道具 举报

151599 发表于 2020-5-24 04:47:18
转发了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本圈子积分规则