深圳网站设计九曲,七种人不宜学软件工程,专业网站推广公司,展厅设计多少钱一平米文章目录 1. 网络编程1.1 软件架构1.2 网络基础 2. 网络通信要素2.1 如何实现网络中的主机互相通信2.2 通信要素一#xff1a;IP地址和域名2.2.1 IP地址2.2.2 域名 2.3 通信要素二#xff1a;端口号2.4 通信要素三#xff1a;网络通信协议 3. 传输层协议#xff1a;TCP与UD… 文章目录 1. 网络编程1.1 软件架构1.2 网络基础 2. 网络通信要素2.1 如何实现网络中的主机互相通信2.2 通信要素一IP地址和域名2.2.1 IP地址2.2.2 域名 2.3 通信要素二端口号2.4 通信要素三网络通信协议 3. 传输层协议TCP与UDP协议3.1 TCP协议与UDP协议3.2 三次握手3.3 四次挥手 1. 网络编程
Java是 Internet 上的语言它从语言级上提供了对网络应用程序的支持程序员能够很容易开发常见的网络应用程序。
Java提供的网络类库可以实现无痛的网络连接联网的底层细节被隐藏在 Java 的本机安装系统里由 JVM 进行控制。并且 Java 实现了一个跨平台的网络库程序员面对的是一个统一的网络编程环境。
1.1 软件架构
C/S架构 全称为Client/Server结构是指客户端和服务器结构。常见程序有QQ、美团app、360安全卫士等软件。 B/S架构 全称为Browser/Server结构是指浏览器和服务器结构。常见浏览器有IE、谷歌、火狐等。 两种架构各有优势但是无论哪种架构都离不开网络的支持。网络编程就是在一定的协议下实现两台计算机的通信的程序。
1.2 网络基础 计算机网络 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源。 网络编程的目的 直接或间接地通过网络协议与其它计算机实现数据交换进行通讯。 网络编程中有三个主要的问题 问题1如何准确地定位网络上一台或多台主机问题2如何定位主机上的特定的应用问题3找到主机后如何可靠、高效地进行数据传输
2. 网络通信要素
2.1 如何实现网络中的主机互相通信
通信双方地址 IP端口号 一定的规则不同的硬件、操作系统之间的通信所有的这一切都需要一种规则。而我们就把这种规则称为协议即网络通信协议。
2.2 通信要素一IP地址和域名
2.2.1 IP地址
IP地址指互联网协议地址Internet Protocol Address俗称IP。IP地址用来给网络中的一台计算机设备做唯一的编号。假如我们把“个人电脑”比作“一台电话”的话那么“IP地址”就相当于“电话号码”。
IP地址分类方式一 IPv4是一个32位的二进制数通常被分为4个字节表示成a.b.c.d 的形式以点分十进制表示例如192.168.65.100 。其中a、b、c、d都是0~255之间的十进制整数。 这种方式最多可以表示42亿个。其中30亿都在北美亚洲4亿中国2.9亿。2011年初已经用尽。 IP地址 网络地址 主机地址 网络地址标识计算机或网络设备所在的网段主机地址标识特定主机或网络设备 其中E类用于科研。IPv6由于互联网的蓬勃发展IP地址的需求量愈来愈大但是网络地址资源有限使得IP的分配越发紧张。 为了扩大地址空间拟通过IPv6重新定义地址空间采用128位地址长度共16个字节写成8个无符号整数每个整数用四个十六进制位表示数之间用冒号分开。比如ABCD:EF01:2345:6789:ABCD:EF01:2345:6789按保守方法估算IPv6实际可分配的地址整个地球的每平方米面积上仍可分配1000多个地址这样就解决了网络地址资源数量不够的问题。2012年6月6日国际互联网协会举行了世界IPv6启动纪念日这一天全球IPv6网络正式启动。多家知名网站如Google、Facebook和Yahoo等于当天全球标准时间0点北京时间8点整开始永久性支持IPv6访问。2018年6月三大运营商联合阿里云宣布将全面对外提供IPv6服务并计划在2025年前助推中国互联网真正实现“IPv6 Only”。 在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外还考虑了在IPv4中解决不好的其它问题主要有端到端IP连接、服务质量QoS、安全性、多播、移动性、即插即用等。
IP地址分类方式二
公网地址( 万维网使用和 私有地址( 局域网使用。192.168.开头的就是私有地址范围即为192.168.0.0–192.168.255.255专门为组织机构内部使用。
常用命令
查看本机IP地址在控制台输入
ipconfig检查网络是否连通在控制台输入
ping 空格 IP地址
ping 192.168.1.222特殊的IP地址
本地回环地址(hostAddress)127.0.0.1主机名(hostName)localhost
2.2.2 域名
Internet上的主机有两种方式表示地址
域名(hostName)https://www.csdn.net/IP 地址(hostAddress)202.108.35.210
域名解析 因为IP地址数字不便于记忆因此出现了域名。域名容易记忆当在连接网络时输入一个主机的域名后域名服务器(DNSDomain Name System域名系统)负责将域名转化成IP地址这样才能和主机建立连接。 在浏览器中输入www.qq.com 域名操作系统会先检查自己本地的hosts文件是否有这个网址映射关系如果有就先调用这个IP地址映射完成域名解析。如果hosts里没有这个域名的映射则查找本地DNS解析器缓存是否有这个网址映射关系如果有直接返回完成域名解析。如果hosts与本地DNS解析器缓存都没有相应的网址映射关系首先会找TCP/IP参数中设置的首选DNS服务器在此我们叫它本地DNS服务器此服务器收到查询时如果要查询的域名包含在本地配置区域资源中则返回解析结果给客户机完成域名解析此解析具有权威性。如果要查询的域名不由本地DNS服务器区域解析但该服务器已缓存了此网址映射关系则调用这个IP地址映射完成域名解析此解析不具有权威性。如果本地DNS服务器本地区域文件与缓存解析都失效则根据本地DNS服务器的设置是否设置转发器进行查询如果未用转发模式本地DNS就把请求发至13台根DNS根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后如果自己无法解析它就会找一个管理.com域的下一级DNS服务器地址(http://qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后就会找http://qq.com)域服务器重复上面的动作进行查询直至找到www.qq.com主机。如果用的是转发模式此DNS服务器就会把请求转发至上一级DNS服务器由上一级服务器进行解析上一级服务器如果不能解析或找根DNS或把转请求转至上上级以此循环。不管是本地DNS服务器用是是转发还是根提示最后都是把结果返回给本地DNS服务器由此DNS服务器再返回给客户机。
2.3 通信要素二端口号
网络的通信本质上是两个进程应用程序的通信。每台计算机都有很多的进程那么在网络通信时如何区分这些进程呢
如果说IP地址可以唯一标识网络中的设备那么端口号就可以唯一标识设备中的进程应用程序。
不同的进程设置不同的端口号。
端口号用两个字节表示的整数它的取值范围是0~65535。 公认端口0~1023。被预先定义的服务通信占用如HTTP80FTP21Telnet23注册端口1024~49151。分配给用户进程或应用程序。如Tomcat8080MySQL3306Oracle1521。动态/ 私有端口49152~65535。
如果端口号被另外一个服务或应用所占用会导致当前程序启动失败。 2.4 通信要素三网络通信协议
通过计算机网络可以使多台计算机实现连接位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则这就好比在道路中行驶的汽车一定要遵守交通规则一样。
网络通信协议在计算机网络中这些连接和通信的规则被称为网络通信协议它对数据的传输格式、传输速率、传输步骤、出错控制等做了统一规定通信双方必须同时遵守才能完成数据交换。
新的问题网络协议涉及内容太多、太复杂。如何解决
计算机网络通信涉及内容很多比如指定源地址和目标地址加密解密压缩解压缩差错控制流量控制路由控制如何实现如此复杂的网络协议呢通信协议分层思想。
在制定协议时把复杂成份分解成一些简单的成份再将它们复合起来。最常用的复合方式是层次方式即同层间可以通信、上一层可以调用下一层而与再下一层不发生关系。各层互不影响利于系统的开发和扩展。
这里有两套参考模型
OSI参考模型模型过于理想化未能在因特网上进行广泛推广TCP/IP参考模型(或TCP/IP协议)事实上的国际标准。 上图中OSI参考模型模型过于理想化未能在因特网上进行广泛推广。 TCP/IP参考模型(或TCP/IP协议)事实上的国际标准。
TCP/IP协议 传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol)TCP/IP 以其两个主要协议传输控制协议(TCP)和网络互联协议(IP)而得名实际上是一组协议包括多个具有不同功能且互为关联的协议。是Internet最基本、最广泛的协议。 TCP/IP协议中的四层介绍
应用层应用层决定了向用户提供应用服务时通信的活动。主要协议有HTTP协议、FTP协议、SNMP简单网络管理协议、SMTP简单邮件传输协议和POP3Post Office Protocol 3的简称,即邮局协议的第3个版等。传输层主要使网络程序进行通信在进行网络通信时可以采用TCP协议也可以采用UDP协议。TCPTransmission Control Protocol协议即传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。UDP(User Datagram Protocol用户数据报协议)是一个无连接的传输层协议、提供面向事务的简单不可靠的信息传送服务。网络层网络层是整个TCP/IP协议的核心支持网间互连的数据通信。它主要用于将传输的数据进行分组将分组数据发送到目标计算机或者网络。而IP协议是一种非常重要的协议。IPinternet protocal又称为互联网协议。IP的责任就是把数据从源传送到目的地。它在源地址和目的地址之间传送一种称之为数据包的东西它还提供对数据大小的重新组装功能以适应不同网络对包大小的要求。
物理数据链路层链路层是用于定义物理传输通道通常是对某些网络连接设备的驱动协议例如针对光纤、网线提供的驱动。 3. 传输层协议TCP与UDP协议
通信的协议还是比较复杂的java.net 包中包含的类和接口它们提供低层次的通信细节。我们可以直接使用这些类和接口来专注于网络程序开发而不用考虑通信的细节。
java.net 包中提供了两种常见的网络协议的支持
UDP用户数据报协议(User Datagram Protocol)。TCP传输控制协议 (Transmission Control Protocol)。
3.1 TCP协议与UDP协议
TCP协议
TCP协议进行通信的两个应用进程客户端、服务端。使用TCP协议前须先建立TCP连接形成基于字节流的传输数据通道传输前采用“三次握手”方式点对点通信是可靠的 TCP协议使用重发机制当一个通信实体发送一个消息给另一个通信实体后需要收到另一个通信实体确认信息如果没有收到另一个通信实体确认信息则会再次重复刚才发送的消息。 在连接中可进行大数据量的传输传输完毕需释放已建立的连接效率低
UDP协议
UDP协议进行通信的两个应用进程发送端、接收端。将数据、源、目的封装成数据包传输的基本单位不需要建立连接发送不管对方是否准备好接收方收到也不确认不能保证数据的完整性故是不可靠的每个数据报的大小限制在64K内发送数据结束时无需释放资源开销小通信效率高适用场景音频、视频和普通数据的传输。例如视频会议 TCP生活案例打电话 UDP生活案例发送短信、发电报 3.2 三次握手
TCP协议中在发送数据的准备阶段客户端与服务器之间的三次交互以保证连接的可靠。
第一次握手客户端向服务器端发起TCP连接的请求第二次握手服务器端发送针对客户端TCP连接请求的确认第三次握手客户端发送确认的确认 1、客户端会随机一个初始序列号seqx设置SYN1 表示这是SYN握手报文。然后就可以把这个 SYN 报文发送给服务端了表示向服务端发起连接之后客户端处于同步已发送状态。 2、服务端收到客户端的 SYN 报文后也随机一个初始序列号(seqy)设置ackx1表示收到了客户端的x之前的数据希望客户端下次发送的数据从x1开始。 设置 SYN1 和 ACK1。表示这是一个SYN握手和ACK确认应答报文。最后把该报文发给客户端该报文也不包含应用层数据之后服务端处于同步已接收状态。 3、客户端收到服务端报文后还要向服务端回应最后一个应答报文将ACK置为 1 表示这是一个应答报文 acky1 表示收到了服务器的y之前的数据希望服务器下次发送的数据从y1开始。 最后把报文发送给服务端这次报文可以携带数据之后客户端处于 连接已建立 状态。服务器收到客户端的应答报文后也进入连接已建立状态。 完成三次握手连接建立后客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性TCP协议可以保证传输数据的安全所以应用十分广泛例如下载文件、浏览网页等。
3.3 四次挥手
TCP协议中在发送数据结束后释放连接时需要经过四次挥手。
第一次挥手客户端向服务器端提出结束连接让服务器做最后的准备工作。此时客户端处于半关闭状态即表示不再向服务器发送数据了但是还可以接受数据。第二次挥手服务器接收到客户端释放连接的请求后会将最后的数据发给客户端。并告知上层的应用进程不再接收数据。第三次挥手服务器发送完数据后会给客户端发送一个释放连接的报文。那么客户端接收后就知道可以正式释放连接了。第四次挥手客户端接收到服务器最后的释放连接报文后要回复一个彻底断开的报文。这样服务器收到后才会彻底释放连接。这里客户端发送完最后的报文后会等待2MSL因为有可能服务器没有收到最后的报文那么服务器迟迟没收到就会再次给客户端发送释放连接的报文此时客户端在等待时间范围内接收到会重新发送最后的报文并重新计时。如果等待2MSL后没有收到那么彻底断开。 1、客户端打算断开连接向服务器发送FIN报文(FIN标记位被设置为11表示为FIN0表示不是)FIN报文中会指定一个序列号之后客户端进入FIN_WAIT_1状态。也就是客户端发出连接释放报文段(FIN报文)指定序列号seq u主动关闭TCP连接等待服务器的确认。 2、服务器收到连接释放报文段(FIN报文)后就向客户端发送ACK应答报文以客户端的FIN报文的序列号 seq1 作为ACK应答报文段的确认序列号ack seq1 u 1。接着服务器进入CLOSE_WAIT(等待关闭)状态此时的TCP处于半关闭状态(下面会说什么是半关闭状态)客户端到服务器的连接释放。客户端收到来自服务器的ACK应答报文段后进入FIN_WAIT_2状态。 3、服务器也打算断开连接向客户端发送连接释放(FIN)报文段之后服务器进入LASK_ACK(最后确认)状态等待客户端的确认。服务器的连接释放(FIN)报文段的FIN1ACK1序列号seqm确认序列号acku1。 4、客户端收到来自服务器的连接释放(FIN)报文段后会向服务器发送一个ACK应答报文段以连接释放(FIN)报文段的确认序号 ack 作为ACK应答报文段的序列号 seq以连接释放(FIN)报文段的序列号 seq1作为确认序号ack。 之后客户端进入TIME_WAIT(时间等待)状态服务器收到ACK应答报文段后服务器就进入CLOSE(关闭)状态到此服务器的连接已经完成关闭。客户端处于TIME_WAIT状态时此时的TCP还未释放掉需要等待2MSL后客户端才进入CLOSE状态。