| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 网络通信协议的发展及socket/netty理解 -> 正文阅读 |
|
[系统运维]网络通信协议的发展及socket/netty理解 |
一:网络通信诞生诞生于冷战期间,起源于美国军方,发展行对成熟后,交予大学及商业机构,开发出民用网络。 二:核心协议发展ARPANET(ARPA网) IMP间使用电话线连接,同时期还有英国、法国等国家发展不同类型的计算机网络。 NPC(网络控制协议) MAC 以太网、CSMA/CD 改进MAC,减少碰撞的算法--如果碰撞了,同时闭口n秒再说话,而这个n是随机数。例如,你和小明同时发,碰撞了,两个人同时退1s,再发送,还是碰撞,但是,如果你选了一个随机数1,退1秒,他选一个随机数3,退3秒,这样就避开了。改进后的介质访问控制协议称为CSMA/CD。 ? ? ? TCP/IP 由此
三:网络硬件如何连接国际互联网-->NAP(网络接入节点)-->NSP(网络服务商)-->ISP(本地网络服务商)-->用户网络 中国的互联网通过海底电缆和美国的互联网连接。接入的网络由国家的网络服务商的通信基础设置构建国内的骨干网,再通过地方的网络服务商构建的网络连接到用户 宏观上分为三个部分:1/和国际互联网连接 2/建立国内的骨干网 3/用户接入网络 四:通讯介质电缆线-->光纤、无线电波、卫星、星链 光纤:使用光的折射原理 无线电波:电磁波传输原理。常用技术为调幅、调频、调相 卫星:电磁波 五:网络七层模型物理层 1.两台机器互联的物理链路,物理介质。网线(双绞线)光纤、无线电波---基本连接 2.存在形式:01001二进制形式存在,电信号、比特流 数据链路层 比特流进行处理:分组。8位为一组,一个字节,依次按顺序发送数据。 数据格式:帧 定义发送地址,MAC地址---网卡--身份证,唯一的。寄件人地址(源MAC地址)----收件人地址(目的MAC地址) 网络层 怎么知道对方的MAC地址? ---ARP协议(address resolution Protocol),通过IP地址知晓MAC地址 判断是否在同一个子网,怎么判断?---IP协议 路径很多,怎么选择最优路径?---一组协议 路由协议,动态路由协议(RIP,OSPF,BGP)。 数据格式:数据包 传输层 对发送的数据进行封装---TCP协议,UDP协议,使数据包一个一个按顺序依次发送 两个应用通信(qq--qq),怎么判断是用qq来回应的呢,而不是其他应用程序呢,-----定义端口的概念,通过端口寻找对应的程序,对应的进行数据处理。 会话层 可以从校验点继续恢复数据进行重传,适用大文件 自动收发,自动寻址的功能 表示层 翻译工作,提供一种公共语言,通信。 应用层 定义了各种应用协议,规范数据格式: HTTP协议,HTTPs协议,FTP协议,DNS协议,TFTP,SMTP协议等等 六:HTTP和TCP/IP协议的关系我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上 七:Java Socket网络编程概述Java的网络编程主要涉及到的内容是Socket编程。Socket,套接字,就是两台主机之间逻辑连接的端点。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址、远程进程的协议端口。 应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。 Socket,实际上是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。实际上,Socket跟TCP/IP协议没有必然的关系,Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以说,Socket的出现,只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、listen、accept、send、read和write等等。网络有一段关于socket和TCP/IP协议关系的说法比较容易理解: “TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。” 实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。socket是对端口通信开发的工具,它要更底层一些。 八:Socket编程流程??(6条消息) 一篇文章带你了解网络编程(总结)_Dec_tail的博客-CSDN博客_网络编程 Socket编程主要涉及到客户端和服务端两个方面,首先是在服务器端创建一个服务器套接字(ServerSocket),并把它附加到一个端口上,服务器从这个端口监听连接。(端口号的范围是0到65536,但是0到1024是为特权服务保留的端口号,我们可以选择任意一个当前没有被其他进程使用的端口) 客户端请求与服务器进行连接的时候,根据服务器的域名或者IP地址,加上端口号,打开一个套接字。当服务器接受连接后,服务器和客户端之间的通信就像输入输出流一样进行操作。 九:Netty网络编程框架理解(很有见解)问题: 现在我们使用通用应用程序或库来相互通信。例如,我们经常使用HTTP客户端库从Web服务器检索信息并通过Web服务调用远程过程调用。但是,通用协议或其实现有时不能很好地扩展。这就像我们不使用通用HTTP服务器来交换大量文件,电子邮件和近实时消息(如财务信息和多人游戏数据)。 我们所需要的是高度优化的协议实现,专用于特殊目的。例如,您可能希望实现针对基于AJAX的聊天应用程序,媒体流或大文件传输进行优化的HTTP服务器。您甚至可以设计并实施一个完全根据您的需求量身定制的全新协议。 另一个不可避免的情况是,您必须处理传统的专有协议,以确保与旧系统的互操作性。在这种情况下,重要的是我们能够多快地实现该协议,同时不牺牲最终应用程序的稳定性和性能。 解决方案: Netty项目旨在为可维护的,高性能的,高可扩展性的协议服务器和客户端的快速开发提供异步事件驱动的网络应用程序框架和工具。(简单理解使用Netty开发自己专属的协议服务器和客户端,实现http协议的痛点) 换句话说,Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。Netty极大地简化并简化了TCP和UDP套接字服务器开发等网络编程。 “快速简便”并不意味着最终的应用程序会受到可维护性或性能问题的影响。 Netty经过精心设计,具有丰富的协议实施经验,如FTP,SMTP,HTTP以及各种基于二进制和文本的遗留协议。因此,Netty成功地找到了一种在不妥协的情况下实现易于开发,性能,稳定性和灵活性的方法。 一些用户可能已经找到了声称具有相同优势的其他网络应用程序框架,您可能想问一下是什么让Netty与它们如此不同。答案是建立在它上面的哲学。从第一天开始,Netty旨在为您提供API和实施方面最舒适的体验。这不是有形的东西,但你会意识到,当你阅读本指南并与Netty一起玩时,这种理念将使你的生活更轻松。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 13:45:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |