最后更新:2022-07-14 14:45:33 手机定位技术交流文章
这里面的网络初始,都是先简单的介绍一下,为了方便理解后面的网络编程,其中里面介绍了重要的TCP和UDP都是简单了解下概念,后面会详细讲TCP和UDP的八股文。
随着时代的发展,计算机越来越需要彼此沟通、共享软件和数据,即在多个计算机上共同工作
企业有网络相互连接, 即由计算机组成的通信网络.
计算机网络是计算机技术和通信技术发展的产物。
网络互连是连接多个计算机实现数据共享。
最内在的功能是共享资源数据, 是最内在的功能.
网络通信: 数据共享是网络数据传输的本质,即通过网络传输计算机之间的数据。
根据网络互连的大小,它可以分为本地网络和宽带网络(还有城市范围的网络,这比前两个网络略少)。
局域网,Local Area Network,简称LAN ,一般覆盖范围在10km之内之内的计算机网络。个人,家庭,公司,校园…
广域网,Wide Area Network ,简称WAN,一般覆盖范围在100km之内之内的计算机网络。城与城之间,国家,全球…
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q2jMDDSI-1657705985781)(D:常用文件夹资料信息图片Typora-imageImageimage-20220710174820466.png)]](http://static.wangsu123.cn/article/image/20220714/279fb233756b8138b0075a988a93cb5c.png)
通过路由器,多个本地网络被连接形成一个宽带网络,物理上形成一个广泛的网络范围。
本地网络属于其子网络。
lan口方向的是局域网,wan口是连接广域网的,wan是ip唯一的地址。ip地址分类,怎么划分,点击这个 Ip地址 & 子网掩码 链接查看详细解说。
协议是建立一个网络的核心的概念;协议是一个过程网络通信的必要环节。
协议只是一套标准或协议,双方必须共同遵守。
网络上的传输本质就是传输一些电信号或者光信号,我们传输的数据是以二进制形式传输出去的,就可以使用高电平/低电平/高频率/低频率…来分别代表0/1,但是 还要明确约定组合起来0 1是啥意思。
就好像考试的时候,如果两个人位置挨的近,私下就可以商量协议是脚跺一下表示选A,两下就是B,一次类推,这样双方指定了这份规则,到时候,传过来的信号,另一方就能明白是什么意思。
上面所说的约定就是协议了,传输的双方约定好数据传输的格式,发送方按照格式构造数据,接收方按照格式来解析数据。我们协议是进行有效通信的必要条件。
计算机网络的结构是指计算机网络的层级协议模型,它最终体现在网络上传输的数据包格式中。
分层,就是把一个太复杂的大问题分解为相对简单的N个小问题看,依次解决每个小问题,合起来就形成了大问题的解,这种方法也可叫理解为“分而治之”,
再说一遍,再修一下,你是不是想重新安排尼,忘记复习呢?
在协议中,一个协议被分成多个协议,允许多个协议根据功能和位置相互合作,将协议分开,并作为协议层效应。
1.上层协议不需要注意下层协议的细节;
例如,在电话上讲话的人不需要知道电话机的工作原理才能进行电话。
2. 任何 协议 层 可以 灵活 地 更换 ;
语言方面,我打电话给另一个人,而且能使用英语;
在设备方面,我与别人打电话,可以使用座位或手机;
简言之,底层向上层提供服务,而上层的功能也取决于底层。
OSI/RM,(Open System Interconnection/Reference Model) 开放系统互连/参考模型
这是一个由国际标准化组织(OSI)提出的参考模型,但没有在互联网上实现。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EFZcHPYk-1657705985783)(D:常用文件夹资料信息图片Typora-imageImageimage-20220710203009077.png)]](http://static.wangsu123.cn/article/image/20220714/9c4511e6caa53ef7315ac51c9b5cd78f.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sIDJtrMh-1657705985784)(D:常用文件夹资料信息图片Typora-imageImageimage-20220710211749089.png)]](http://static.wangsu123.cn/article/image/20220714/e6a463b56f753af41387528f27c7b0e9.png)
OSI 这个东西本身就很抽象,我用一个现实生活中寄快递的栗子,帮助大家的理解。
互联网实际上使用了工业标准。
它分为四级协议模型和五级协议模型
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-09xj6OOX-1657705985785)(D:常用文件夹资料信息图片Typora-imageImageimage-20220711164612593.png)]](http://static.wangsu123.cn/article/image/20220714/8b2e7c790ba0967bcd96b5d7f2528946.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)]](http://static.wangsu123.cn/article/image/20220714/b00fadb54a04037a5170b7868970259a.png)
这封信封在协议的每个层上密封,当转移到协议的下层时,头将相应的协议格式添加到层中,在数据链层中增加头尾,以太网的第一部分将数据传输到邻近设备(邻近的食品站),Ethernet的尾巴是与目的地(某人邻居的蔬菜站)相邻的设备。
不同的协议层为包有不同的名称。
1、传输层:数据段
2、网络层:数据报
3、链路层:帧
物理层:位
因此,次层包装的过程被理解为包装快车,分开快车是拆卸快车。
加密不仅供发送者和接收者使用,也可以用中间设备(路由器/交换器)加密和共享数据。
通常情况下,交换机,你只需要将它分配到数据链层。向交换者发送数据,处理交换机的物理层,交给数据链路层,数据链层在这里分析数据并重新包装(修改内部的MAC地址,它还决定将下一个数据发送到邻近设备。
通常的情况下,路由器,它只是包装和使用它到网络层。向路由器发送数据,处理路由器的物理层,交给数据链路层,数据链路层再处理,交给网络层,网络层将基于目标地址,规划下一条交通路线,规划完成后,数据链层和物理层重新分配给密封。(在实际情况中,路由器/交换机,可以分析到传输层,甚至到应用层)
通过这些协议,可以实现网络间的通信。 当然,通信也包括IP地址,Mac地址。
上面已经讨论过许多协议,这些协议旨在使我们能够在网络上共享资源和数据,并提高计算机系统的可靠性和可用性。
网络互连的目的是实现网络通信,即基于网络数据传输的网络数据传输,具体地说,在网络主机中的不同进程之间。
那么,如何决定由哪个主机发送数据到正在形成的网络中的那个主机?这需要使用IP地址来识别。
ip地址描述网络上的主机;
Port描述了主机上的一个程序。(跟URL里面的Port是一样的)
ip地址有详细解说,可以跳转 Ip地址 & 子网掩码 里面看。
网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)。
只是要以不同的方式满足这个过程,即使同一个主机只是一个不同的进程,基于网络传输数据,也属于网络编程。但只有当你开发或在主机上练习完成网络编程时才会如此。我们的主要目的是在网络上提供不同的主机,基于网络传输数据源.
在这里获取和交付也符合两个概念,即客户服务端和服务器。
Socket是属于网络编程套接字里面的范畴,是操作系统提供给应用程序的一组 的 API(ApplicationProgrammingInterface), 通过调用这些API就可以实现把数据交给传输层,传输层取得数据程序员主要涉及应用层,这些API在应用程序层内使用。
像Tomcat一样,Tomcat是一个在服务器上部署的应用程序,只要用户通过其计算机的浏览器访问Tomcat,它就向外界提供服务。
Tomcat的这个过程,通过“网络” ,浏览器 和 Tomcat的底层就使用的了 Socket 编程,而我们就把操作系统里面提供的这些支持网络编程的 API 称为Socket API。
插座基本上是应用程序层和传输层之间的接口.
传输层中有许多网络协议,这里涉及的两个最重要的协议是TCP,UDP ,因此,有两个主要类型的 Socket API。在介绍上述协议模型时,只要给TCP和UDP一个简单的解释,这里我们观察了TCP和UDP之间的具体对比:
TCP:
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提供的插座API分为两个主要类别:
1、DatagramSocket:表示一个Socket对像 => 对应着操作系统socket 文件=> 对于网卡的封装
2,数据gramPacket:显示传输的UDP数据消息
这个就是面向字节流,读写 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)]](http://static.wangsu123.cn/article/image/20220714/1b5b795bf3d84eb0baf98f54740f8b06.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负责和客服端进行通信的
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DZde8MB4-1657705985789)(D:常用文件夹资料信息图片Typora-imageImageimage-20220713173350526.png)]](http://static.wangsu123.cn/article/image/20220714/6f4f06cef1bf83a9321f4ee2672e922b.png)
针对面对上诉问题,当我们处理客户服务时,所有这些都影响到第二个调用,然后我们可以使用多个线程。线程处理 accept(),另一个线程在客户服务端处理多个请求,这需要向每个有良好连接的客户服务点发送一个线程
铁汁们,觉得笔者写的不错的可以点个赞哟❤
本文由 在线网速测试 整理编辑,转载请注明出处。