网络初始&网络编程

      最后更新:2022-07-14 14:45:33 手机定位技术交流文章

      网络初始&网络编程

      文章目录

      • 网络初始&网络编程
        • 计算机网络的定义
        • 域网和宽带
        • 三、协议
          • 3.1、协议的分层
        • 4.通用协议模型☆
          • 4.1、OSI/RM
          • 4.2、TCP/IP ☆
        • 五、封装和分用
        • 六、网络通信
        • 七、网络编程
          • 索克索克
          • 7.2.UDP数据消息包的编程
          • 7.3TCP流字符串编程

      前言:

      这里面的网络初始,都是先简单的介绍一下,为了方便理解后面的网络编程,其中里面介绍了重要的TCP和UDP都是简单了解下概念,后面会详细讲TCP和UDP的八股文。

      计算机网络的定义

      随着时代的发展,计算机越来越需要彼此沟通、共享软件和数据,即在多个计算机上共同工作
      企业有网络相互连接, 即由计算机组成的通信网络.

      计算机网络是计算机技术和通信技术发展的产物。

      网络互连是连接多个计算机实现数据共享。

      最内在的功能是共享资源数据, 是最内在的功能.

      网络通信: 数据共享是网络数据传输的本质,即通过网络传输计算机之间的数据。

      根据网络互连的大小,它可以分为本地网络和宽带网络(还有城市范围的网络,这比前两个网络略少)。

      域网和宽带

      局域网,Local Area Network,简称LAN ,一般覆盖范围在10km之内之内的计算机网络。个人,家庭,公司,校园…

      广域网,Wide Area Network ,简称WAN,一般覆盖范围在100km之内之内的计算机网络。城与城之间,国家,全球…

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q2jMDDSI-1657705985781)(D:常用文件夹资料信息图片Typora-imageImageimage-20220710174820466.png)]

      通过路由器,多个本地网络被连接形成一个宽带网络,物理上形成一个广泛的网络范围。
      本地网络属于其子网络。

      lan口方向的是局域网,wan口是连接广域网的,wan是ip唯一的地址。ip地址分类,怎么划分,点击这个 Ip地址 & 子网掩码 链接查看详细解说。

      三、协议

      协议是建立一个网络的核心的概念;协议是一个过程网络通信的必要环节。

      协议只是一套标准或协议,双方必须共同遵守。

      网络上的传输本质就是传输一些电信号或者光信号,我们传输的数据是以二进制形式传输出去的,就可以使用高电平/低电平/高频率/低频率…来分别代表0/1,但是 还要明确约定组合起来0 1是啥意思。

      就好像考试的时候,如果两个人位置挨的近,私下就可以商量协议是脚跺一下表示选A,两下就是B,一次类推,这样双方指定了这份规则,到时候,传过来的信号,另一方就能明白是什么意思。

      上面所说的约定就是协议了,传输的双方约定好数据传输的格式,发送方按照格式构造数据,接收方按照格式来解析数据。我们协议是进行有效通信的必要条件。

      3.1、协议的分层

      计算机网络的结构是指计算机网络的层级协议模型,它最终体现在网络上传输的数据包格式中。

      分层,就是把一个太复杂的大问题分解为相对简单的N个小问题看,依次解决每个小问题,合起来就形成了大问题的解,这种方法也可叫理解为“分而治之”,

      再说一遍,再修一下,你是不是想重新安排尼,忘记复习呢?

      在协议中,一个协议被分成多个协议,允许多个协议根据功能和位置相互合作,将协议分开,并作为协议层效应。

      • 协议分层两大好处

      1.上层协议不需要注意下层协议的细节;

      例如,在电话上讲话的人不需要知道电话机的工作原理才能进行电话。

      2. 任何 协议 层 可以 灵活 地 更换 ;

      语言方面,我打电话给另一个人,而且能使用英语;

      在设备方面,我与别人打电话,可以使用座位或手机;

      简言之,底层向上层提供服务,而上层的功能也取决于底层。

      4.通用协议模型☆

      4.1、OSI/RM

      OSI/RM,(Open System Interconnection/Reference Model) 开放系统互连/参考模型

      这是一个由国际标准化组织(OSI)提出的参考模型,但没有在互联网上实现。

      • OSI分为七层协议模型:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EFZcHPYk-1657705985783)(D:常用文件夹资料信息图片Typora-imageImageimage-20220710203009077.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sIDJtrMh-1657705985784)(D:常用文件夹资料信息图片Typora-imageImageimage-20220710211749089.png)]

      OSI 这个东西本身就很抽象,我用一个现实生活中寄快递的栗子,帮助大家的理解。

      4.2、TCP/IP ☆

      互联网实际上使用了工业标准。

      它分为四级协议模型和五级协议模型

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-09xj6OOX-1657705985785)(D:常用文件夹资料信息图片Typora-imageImageimage-20220711164612593.png)]

      TCP/IP的底层,网络接口层,没有实际内容,但它支持OSI/RM中的物理层和数据链层的所有协议。

      该五级协议采用分级方法,结合OSI/RM和TCP/IP的优点。

      由于网络接口层与OSI/RM的第一个两层相符,它也包含IEE802.3; IEE802.6; IEE802.8; IEE802.11的标准。

      在软件行业,我们更关心网络层之上的内容,而物理层是纯硬件,而硬件不是程序员改变管理的范围。

      网络层:点对点,负责任何节点之间的数据传输,注意哪些类型的线实际上正在通过传输过程。(注意过程)例如IP协议中,通过IP地址识别一个主机,通过路由表,将两个主机之间的数据传输线规划(路由)。路由器在网络层中工作。

      传输层:端到端,只关注结果(TCP/UDP)。

      应用程序层: 应用程序完成的逻辑, 数据接收后应做什么.

      五、封装和分用

      分离 协定 涉及 两 个 重要 过程 :封装和分用

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NwB0lymS-1657705985786)(D:常用文件夹资料信息图片Typora-imageImageimage-20220711172539461.png)]

      这封信封在协议的每个层上密封,当转移到协议的下层时,头将相应的协议格式添加到层中,在数据链层中增加头尾,以太网的第一部分将数据传输到邻近设备(邻近的食品站),Ethernet的尾巴是与目的地(某人邻居的蔬菜站)相邻的设备。

      不同的协议层为包有不同的名称。

      1、传输层:数据段

      2、网络层:数据报

      3、链路层:帧

      物理层:位

      因此,次层包装的过程被理解为包装快车,分开快车是拆卸快车。

      加密不仅供发送者和接收者使用,也可以用中间设备(路由器/交换器)加密和共享数据。

      通常情况下,交换机,你只需要将它分配到数据链层。向交换者发送数据,处理交换机的物理层,交给数据链路层,数据链层在这里分析数据并重新包装(修改内部的MAC地址,它还决定将下一个数据发送到邻近设备。

      通常的情况下,路由器,它只是包装和使用它到网络层。向路由器发送数据,处理路由器的物理层,交给数据链路层,数据链路层再处理,交给网络层,网络层将基于目标地址,规划下一条交通路线,规划完成后,数据链层和物理层重新分配给密封。(在实际情况中,路由器/交换机,可以分析到传输层,甚至到应用层)

      通过这些协议,可以实现网络间的通信。 当然,通信也包括IP地址,Mac地址。

      六、网络通信

      上面已经讨论过许多协议,这些协议旨在使我们能够在网络上共享资源和数据,并提高计算机系统的可靠性和可用性。

      网络互连的目的是实现网络通信,即基于网络数据传输的网络数据传输,具体地说,在网络主机中的不同进程之间。

      那么,如何决定由哪个主机发送数据到正在形成的网络中的那个主机?这需要使用IP地址来识别。

      ip地址描述网络上的主机;

      Port描述了主机上的一个程序。(跟URL里面的Port是一样的)

      ip地址有详细解说,可以跳转 Ip地址 & 子网掩码 里面看。

      七、网络编程

      ​ 网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)。

      只是要以不同的方式满足这个过程,即使同一个主机只是一个不同的进程,基于网络传输数据,也属于网络编程。但只有当你开发或在主机上练习完成网络编程时才会如此。我们的主要目的是在网络上提供不同的主机,基于网络传输数据源.

      • 程序A:编写以获取网络资源
      • 程序B:编程提供网络资源

      在这里获取和交付也符合两个概念,即客户服务端和服务器。

      • 客户:获得服务的单方面过程
      • 服务器:提供服务的单边过程,可以提供外部服务。

      索克索克

      ​ Socket是属于网络编程套接字里面的范畴,是操作系统提供给应用程序的一组 的 API(ApplicationProgrammingInterface), 通过调用这些API就可以实现把数据交给传输层,传输层取得数据程序员主要涉及应用层,这些API在应用程序层内使用。

      像Tomcat一样,Tomcat是一个在服务器上部署的应用程序,只要用户通过其计算机的浏览器访问Tomcat,它就向外界提供服务。

      ​ Tomcat的这个过程,通过“网络” ,浏览器 和 Tomcat的底层就使用的了 Socket 编程,而我们就把操作系统里面提供的这些支持网络编程的 API 称为Socket API

      插座基本上是应用程序层和传输层之间的接口.

      传输层中有许多网络协议,这里涉及的两个最重要的协议是TCP,UDP ,因此,有两个主要类型的 Socket API。在介绍上述协议模型时,只要给TCP和UDP一个简单的解释,这里我们观察了TCP和UDP之间的具体对比:

      TCP:

      • 有连接
      • 可靠传输
      • 面向字节流
      • 全双工

      UDP:

      • 无连接
      • 不可靠传输
      • 面向数据报
      • 全双工

      7.2.UDP数据消息包的编程

      UDP 面向数据报

      DatagramSocket APIDatagramSocket是一个UDP接口,用于发送和接收UDP数据消息。

      数据gramSocket的构建方法:

      方法签名 方法说明
      DatagramSocket() 创建一个UDP数据报套接字的Socket,绑定到本机任意一个随机端口 (一般用于客户端)
      DatagramSocket(int port) 创建一个UDP数据报套接字的Socket,绑定到本机指定的端口(一般用 于服务端)

      数据gramSocket方法:

      方法签名 方法说明
      void receive(DatagramPacket p) 接口从那里接收数据消息(如果数据消息不被接收,该方法将阻止等待)
      void send(DatagramPacket p) 从这个插座发送数据包(不停止等待,直接发送)
      void close() 关闭此数据报套接字

      DatagramSocket 这个类描述了Socket对象,类比FIle对象,本质上是一个文件,它类似于“网络卡”装置的抽象。想要操作网卡,首先创建插座对象,通过 Socket对象的操作,你可以响应网络卡,这个插座在这里可以被看作“网络卡远程控制器”。

      DatagramPacket APIDatagramPacket是一个由UDP Socket发送和接收的数据消息

      数据gramPacket建模方法:

      方法签名 方法说明
      DatagramPacket(byte[] buf, int length) 构造一个DatagramPacket以用来接收数据报,接收的数据保存在 字节数组(第一个参数buf)中,接收指定长度(第二个参数 length)
      DatagramPacket(byte[] buf, int offset, int length, SocketAddress address) 构造一个DatagramPacket以用来发送数据报,发送的数据为字节 数组(第一个参数buf)中,从0到指定长度(第二个参数 length)。address指定目的主机的IP和端口号

      DatagramPacket 方法:

      方法签名 方法说明
      InetAddress getAddress() 从接收数据消息中获取接收主机的IP地址;或从发送数据消息中获取接收主机的IP地址
      int getPort() 从接收数据消息中获取发送主机的端口号;或从发送数据消息中获取接收主机的端口号
      byte[] getData() 获取数据报中的数据

      DatagramPacket对象描述了UDP数据报告,它是UDP数据传输的基本单元。

      • 基于UDP的服务终止:
      • 基于UDP客服端

      UDP提供的插座API分为两个主要类别:

      1、DatagramSocket:表示一个Socket对像 => 对应着操作系统socket 文件=> 对于网卡的封装

      2,数据gramPacket:显示传输的UDP数据消息

      7.3TCP流字符串编程

      这个就是面向字节流,读写 Socket 的时候,不需要xxxPacket 这样的类,直接以字节为单位进行读写。

      ServerSocket API

      1,ServerSocket是创建TUP服务器端的Socket API。

      • 构造方法:
      方法签名 方法说明
      ServerSocket(int port) 创建服务端口插座插座并将其绑定到指定的端口
      • 方法:
      方法签 名 方法说明
      Socket accept() 开始监听指定端口(创建时绑定的端口),有客户端连接后,返回一个服务端Socket 对象,并基于该Socket建立与客户端的连接,否则阻塞等待
      void close() 关闭此套接字

      以下是值得注意的事项:

      当A和B建立TCP连接时,一个将叫索克 api,让A的核和B的核建立连接,这里进行建立连接的过程就是三次握手;accept()的作用就是,B上的应用程序需要从B内核获取这个连接到用户程序,以便能够使用TCP连接通信,而接受()不知道对方什么时候会建立连接并阻止等待。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MDe3kww8-1657705985788)(D:常用文件夹资料信息图片Typora-imageImageimage-20220713152415401.png)]

      Socket API

      2、Socket 是既给服务器使用也给客户端使用

      • 构造方法
      方法签名 方法说明
      Socket(String host, int port) 创建一个客户端流套接字Socket,并与对应IP的主机上,对应端口的 进程建立连接
      • 方法
      方法签名 方法说明
      InetAddress getInetAddress() 返回与插座连接的地址
      InputStream getInputStream() 返回此插座的输入流
      OutputStream getOutputStream() 返回该插座的输出流

      在TCP服务器上需要两个类型的插座:

      1、ServerSocket

      2、Socket(clientSocket)

      这两个角色完全不同。

      serverSocket,就是负责建立连接的;Socket负责和客服端进行通信的

      • TCP 的服务端
      • TCP 的客服端

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DZde8MB4-1657705985789)(D:常用文件夹资料信息图片Typora-imageImageimage-20220713173350526.png)]

      针对面对上诉问题,当我们处理客户服务时,所有这些都影响到第二个调用,然后我们可以使用多个线程。线程处理 accept(),另一个线程在客户服务端处理多个请求,这需要向每个有良好连接的客户服务点发送一个线程

      • 正确代码 加多线程

      铁汁们,觉得笔者写的不错的可以点个赞哟❤

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29616.html

          热门文章

          文章分类