Java网络编程笔记

      最后更新:2022-01-27 09:17:59 手机定位技术交流文章

      文章目录

      • 前言
      • 一、网络编程是什么
      • 二、初识计算机网络
        • (一)计算机网络的概念
        • (二)计算机网络的主要功能
        • (三)计算机网络的分类
      • 三、网络通信协议及接口
        • (一)网络通信协议
        • (二)网络通信接口
        • (三)通信协议分层思想
        • (四)协议分类
          • 1.UDP
          • 2.TCP
            • 三次握手
            • 四次挥手
      • 总结

      前言

      初步学习Java网络编程的知识

      一、网络编程是什么

      网络编程不等于网站编程,网络编程是指对编译程序使用套接字Socket来实现进程间的通信,一般称为TCP/IP编程。

      二、初识计算机网络

      计算机网络

      (一)计算机网络的概念

      计算机网络

      计算机网络

      是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路==连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

      关于计算机网络通信协议

      协议名称 协议含义
      www 万维网 world wide web
      HTML 超文本标记语言 hyper text markup language
      URL 统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
      Servelt Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
      HTTP 超文本传输协议,用于从WWW服务器传输超文本到本地浏览器的传送协议。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等。
      UDP 用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。在网络中与TCP协议一样用于处理数据包,是一种无连接的协议。
      TCP/IP 传输控制协议/互联网协议地址

      (二)计算机网络的主要功能

      1. 资源共享:
        资源共享包括计算机硬件资源、软件资源和数据资源的共享。硬件资源的共享提高了计算机硬件资源的利用率,由于受经济和其他因素的制约,这些硬件资派不可能所有用户都有,所以使用计算机网络不仅可以使用自身的硬件资源,也可共享网络上的资源。软件资源和数据资源的共享可以充分利用已有的信息资派.减少软件开发过程中的劳动,避免大型数据库的重复建设。

      2. 信息交换:
        这是计算机网络最基本的功能.计算机网络中的计算机之间或计算机与终端之间,可以快速可靠地相互传递数据、程序或文件。例如,用户可以在网上传送电子邮件、交换数据,可以实现在商业部门或公司之间进行订单、发票等商业文件安全准确地交换。

      3. 均衡负荷与分布处理:
        对于大型的任务或课题.如果都集中在一台计算机上.负荷太重,这时可以将任务分散到不同的计算机分别完成,或由网络中比较空闲的计算机分担负荷,各个计算机连成网络有利于共同协作进行重大科研课题的开发和研究。利用网络技术还可以将许多小型机或傲型机连成具有高性能的分布式计算机系统,使它具有解决复杂问题的能力,从而大大降低费用。

      4. 综合信息服务:
        计算机网络可以向全社会提供各处经济信息、科研情报、商业信息和咨询服务,如Internet中的www就是如此。

      (三)计算机网络的分类

      计算机网络按其覆盖的地理范围可分为如下3类:

      • 局域网(LAN)。局域网是一种在小区域内使用的,由多台计算机组成的网络,覆盖范围通常局限在10 千米范围之内,属于一个单位或部门组建的小范围网。

      • 城域网(MAN)。城域网是作用范围在广域网与局域网之间的网络,其网络覆盖范围通常可以延伸到整个城市,借助通信光纤将多个局域网联通公用城市网络形成大型网络,使得不仅局域网内的资源可以共享,局域网之间的资源也可以共享。

      • 广域网(WAN) 广城网是一种远程网,涉及长距离的通信,覆盖范围可以是个国家或多个国家,甚至整个世界。由于广域网地理上的距离可以超过几千千米,所以信息衰减非常严重,这种网络一般要租用专线,通过接口信息处理协议和线路连接起来,构成网状结构,解决寻径问题。

      三、网络通信协议及接口

      网络通信协议及接口

      (一)网络通信协议

      计算机网络中实现通信必须有一些约定,即通信协议;包括对速率,传输代码,代码结构,传输控制步骤,出错控制等制定的标准。常见的网络通信协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。

      TCP/IP协议:传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocal),是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫它的下一层所提供的协议来完成自己的需求。

      (二)网络通信接口

      为了使两个节点之间能进行对话,必须在他们之间建立通信工具(即接口),使彼此之间,能进行信息交换。接口包括两部分:

      • 硬件装置:实现结点之间的信息传送
      • 软件装置:规定双方进行通信的约定协议

      (三)通信协议分层思想

      1.为什么要分层

      由于结点之间联系很复杂,在制定协议时,把复杂成份分解成一些简单的成份,再将它们复合起来。最常用的复合方式就是层次方式,及同层间可以通信,上一层可以调用下一层,而与再下一层不发生关系。各层互不影响,利于系统的开发和扩展。

      2.通信协议的分层规定

      把用户应用程序作为最高层,把物理通信线路作为最底层,将其间的协议处理分为若干层,规定每层处理的任务,也规定每层的接口标准。

      3.参考模型

      在这里插入图片描述
      上图中,TCP/IP协议中的四层分别是应用层、传输层、网络层和链路层,每层分别负责不同的通信功能。

      • 应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。

      • 传输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。

      • 网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。

      • 数据链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。

      我们编写的程序位于应用层,因此我们的程序是和TCP/UDP打交道的。

      (四)协议分类

      通信的协议还是比较复杂的,java.net包中包含的类和接口,它们提供低层次的通信细节,我们可以直接使用这些类和接口,来专注于网络程序开发,而不用考虑通信的细节。

      java.net包中提供了两种常见的网络协议的支持:TCP和UDP。

      • TCP是可靠的连接,TCP就像打电话,需要先打通对方电话,等待对方有回应后才会跟对方继续说话,也就是一定要确认可以发信息以后才会把信息发出去。TCP上传任何东西都是可靠的,只要两台机器上建立起了连接,在本机上发送的数据就一定能传到对方的机器上。
      • UDP就好比发电报,发出去就完事了,对方有没有接收到它都不管,所以UDP是不可靠的。
      • TCP传送数据虽然可靠,但传送得比较慢;UDP传送数据不可靠,但是传送得快。

      1.UDP

      • 用户数据报协议(User Datagram Protocol)。

      • 数据报(Datagram):网络传输的基本单位

      • UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

      • 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

      • 但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时,不建议使用UDP协议。

      • 特点:数据被限制在64kb以内,超出这个范围就不能发送了。

      2.TCP

      • 传输控制协议(Transmission Control Protocol)。
      • TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。
      • 在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。

      三次握手

      TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠。

      在这里插入图片描述

      • 第一次握手: SYN=1 seq=x.SYN=1,ACK=0.表示为请求连接报文,(这里ACK=0省略)
        seq表示主机A向主机B协商从序号为x发送数据报

        这里需要注意的是,A向B的连接未建立无法传送数据,所以该请求报文消耗序号最小,消耗1个序号

      • 第二次握手SYN=1,ACK=1,seq=y,ack=x+1。

        SYN=1,ACK=1表示同意建立A向B的连接,seq=y表示从序号为y的报文段开始发送,

        ack=x+1表示已收到序号x的报文段,期望收到x+1序号的数据,即已收到序号x。第一次的请求报文消耗了1个序号

        ack=x+1确认了第一次报文的收到,并请求B向A的连接

      • 第三次握手SYN=1,ACK=1,seq=x+1,ack=y+1 。

        seq=x+1表示自己从序号x+1开始发送,期望收到主机B序号y+1的数据

        第三次报文确认了前两次请求报文的收到。

      四次挥手

      在这里插入图片描述

      • 第一次挥手FIN=1表示请求关闭A向B的连接 seq=u 已发送u-1序号的数据报

      • 第二次挥手ACK=1,同意关闭A向B的连接。seq=v,B向A发送的数据报序号为v。ack=u+1已收到u序号数据报

        此时A向B方向的连接已经关闭,中间保持一段时间单向B向A连接

      • 第三次挥手FIN=1 seq=w

        FIN=1,请求关闭B向A连接。seq=w,从序号为w开始向A发送。

        这里ack=u+1是因为前两次已经关闭了客户向服务器这个方向的链接。

      • 第四次挥手ACK=1,seq=u+1,ack=w+1。

        ACK=1,同意关闭B向A连接。seq=u+1,因为A向B的连接已关闭,故这里是u+1。ack=w+1,已收到序号w的报文段,期望收到w+1序号的报文段。

      为什么挥手需要四次?
      关闭连接时,客户端向服务端发送 FIN 时,仅仅表示客户端不再发送数据了但是还能接收数据。服务器收到客户端的 FIN 报文时,先回一个 ACK 应答报文,而服务端可能还有数据需要处理和发送,等服务端不再发送数据时,才发送 FIN 报文给客户端来表示同意现在关闭连接。从上面过程可知,服务端通常需要等待完成数据的发送和处理,所以服务端的 ACK 和 FIN 一般都会分开发送,从而比三次握手导致多了一次
      通俗理解:
      • 三次握手A:我要过来了!B:我知道你要过来了!A:我现在过来!
      • 四次挥手A:我们分手吧!B:真的分手吗?B:真的真的要分手吗?A:是的! 由此,可以可靠地进行连接和断开。

      总结

      提示:这里对文章进行总结:
      例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

          热门文章

          文章分类