盘点网络编程必须要知道的基础知识

在Java编程开发中,网络通信的开发是很重要的一部分,它是两台或多台计算机进行网络的基础,网络程序编写的目的也就是为了与其他计算机之间进行网络通信,所以今天大灰狼就来和大家分享一下Java网络通信中要的知道的一些知识。

其实在Java的发展过程中,为了更加方便的进行网络通信,开发者逐渐的将网络编程中所需要的一些内容封装成了不同的类,用户在进行网络编程时,只需要创建相应类的对象,并且调用相应的方法即可。

首先我们来了解一下网络的通信结构。

局域网和因特网

在网络通信中,两台计算机的信息传输可以使用如下的网络线路来表示:

  • 其中服务器是指提供信息的计算机或程序,
  • 客户端是指请求信息的计算机或程序,
  • 两者之间通过网络进行连接并且实现相互的通信,

那么我们所了解的局域网和因特网又有哪些区别的呢?

局域网(LAN)从名字上我们大概就可以了解,它是在一定区域内由一定数量的计算机互相连接而成的网络,它可以是两台,也可以是同一个区域内的上千台计算机构成,当一个局域网的范围继续进行扩大,它也就形成了广域网(WAN)。

而我们所熟知的因特网(Internet)就是由无数个局域网和广域网连接而成的,它是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协定相连,形成逻辑上的单一巨大国际网络。这种将计算机网络互相联接在一起的方法可称作“网络互联”,在这基础上发展出覆盖全世界的全球性互联网络称“互联网”,即是“互相连接一起的网络”。

那么我们接下来就来聊一聊这些网络之间到底具备哪些协议?

网络协议

网络协议规定了计算机之间连接的物理、机械、电器等特征,计算机之间的相互寻址规则,数据发送冲突的解决方式,长数据如何分段传送和接收等内容。这就像在世界上不同的国家之间,有不同的法律是一样的,目前在互联网中的网络协议也有很多种,其中最常见的就是IP协议和TCP以及UDP协议。

大灰狼来简单的和大家介绍一下以上这三种协议的基本内容

IP协议

IP是internet protocol的简称,是网络协议中的一种,internet网络采用的协议是TCP/IP协议,但是这个协议是绝对不可以小视的,因特网依靠TCP/IP协议在全球范围内实现了不同硬件结构、不同操作系统、不同网络系统之间的互联。在intertet网络中,存在着数以亿计的主机,每一台主机都用网络为其分配的intertete地址来代表自己主机本身,这个地址就是IP地址,所以我们也可以说IP地址就是某一台计算机的身份证号码。

到目前为止呢,IP地址用四个字节来表示,也就是32位的二进制数来表示,这也是我们通常最常见的IPV4地址,为了方便使用呢,我们通常取每个字节的十进制数,并且在每个字节之间用圆点隔开来表示IP地址,如最常见的192.168.1.1,当然肯定还有小伙伴在电脑上也发现有用16个字节来表示的IP地址,这种IP地址是属于IPV6地址

并且TCP/IP模式是一种层次结构,一共有四层,分别为应用层,传输层互联网层和网络层,他们每一层都有自己所特定的功能,提供特定的服务和对应的访问接口,并且拒一定的独立性,这四层的关系如下图所示

TCP与UDP协议

在TCP/UDP协议栈中,有两个高级协议是我们在进行网络应用程序的编写中应该要了解的,即传输控制协议TCP和用户数据报协议UDP。

TCP协议是一种以固接连线为基础的协议,它提供两台计算机间可靠的数据传输,TCP可以保证从一端数据送至连接的另一端时,数据能够准确送达,而且抵达的数据的排列顺序和送出时的顺序相同,

因此TCP协议适合可靠性要求非常高的场合,打个比方来说:这就像我们双方在打电话,我必须先拨号给对方,等两端确定连接之后,双方才能互相听到对方讲话,也能够知道对方用的是什么内容。

而UDP协议是无连接通信协议,不保证数据的可靠传输,但能够向若干个目标发送数据,或者接收来自若干个园的数据,UDP以独立发送数据包的方式进行,这种方式就像快递员送快递给客户,可以寄出很多个包裹给同一个人,每一个包裹都是相互独立的个包裹,送达的顺序并不重要,快递员小哥接收包裹的顺序也不能保证与愁包裹的顺序相同。

因此,UDP协议适用于一些对数据准确性要求不高,但对数据传输速度和时效性要求非常高的网络,例如我们常见的网络聊天室,在线影片等。

这其中的原因就是因为TCP协议在认证上存在额外耗费,可能是传输速度减慢,而UDP协议即使有一小部分数据包损失,或者传输顺序有所不同,也不会造成严重的危害该通信。

这也就是为什么常说TCP可靠而非安全,UDP安全而非可靠了。

在这里我们需要注意一点,就是一些防火墙和路由器会设置成不允许就地被数据包传输,因此,若遇到UDP连接方面的问题,应该先确定所在的网络是否允许UDP协议

端口和套接字

刚听到这两个名词的时候,小伙伴可能不是特别了解,在这里打个通俗一点的比方,套接字就好比电源插座,将原本复杂的客户端服务器端通过这个插座连接在一起。

一般而言,对于一台计算机来说,只有单一的连接到网络的物理连接,所有的数据都通过此连接对内、对外送达特定的计算机。这就是端口的定义,网络程序设计中的端口(Port)并非真实存在的,他只不过是一个假想的连接装置,端口被规定为在一个0~65535之间的整数。例如HTTP服务一般使用80端口,FTP服务使用21端口,所以当一台计算机提供了多种不同的服务时,客户机就会通过不同的端口来确定连接到服务器上的哪项服务上面。

其实在端口上也有一定的讲究,如0~1023之间的端口,一般用于一些知名的网络服务和应用,而用户的普通网络应用程序应该使用1024以上的端口数,这样做的目的也是避免端口号与另一个应用或系统服务所用的端口所造成冲突。

端口的使用如下图所示

在网络程序中的套接字(Socket)表示用于将应用程序与端口连接起来,同样套接字也是一个假想的连接装置,在JAVA编程中将套接字可以抽象为类,我们在进行程序开发的时候,只需要创建Socket类对象,就可以使用套接字了。

可以用下面这个图来简单的表示套接字:

好啦,关于网络通信基础的讲解就是这些了,之后大灰狼也会和大家分享如何使用TCP和UDP以及MQTT协议进行网络程序的编写。

到此这篇关于盘点网络编程必须要知道的基础知识的文章就介绍到这了,更多相关网络编程基础知识内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 涉及网络编程时,需要用到的几个常用方法

    涉及网络编程时,需要用到的几个常用方法. 1. 在ASP.NET中专用属性:获取服务器电脑名:Page.Server.ManchineName获取用户信息:Page.User获取客户端电脑名:Page.Request.UserHostName获取客户端电脑IP:Page.Request.UserHostAddress 2. 在网络编程中的通用方法:获取当前电脑名:static System.Net.Dns.GetHostName()根据电脑名取出全部IP地址:static System.Net.

  • 网络编程之get与post的区别与联系

    区别与联系: 1.get是从服务器上获取数据,post则是向服务器传送数据: 2.get将表单中数据的按照variable=value的 形式,添加到action所指向的URL后面,并且两者使用"?"连接,而各个变量之间使用"&"连接.Post是将表单中的数据放在form的 数据体中,按照变量和值相对应的方式,传递到action所指向URL:fashion jewelry wholesale 所以从上述也可以得到另外两个结论: 1.get传送的数据量较小,不

  • 谈谈新手如何学习PHP网络编程第1/2页

    文章开头就列举了那么多联系方式,难免会让大家感觉有点AD的意味,但是不容质疑的是,默默的确有那么丁点的表现欲^_^,虽然有时候过于细致会被人说婆妈,但是幸好这种细致对于编程来说,还是蛮有益的! 从默默自己向别人问怎么学PHP开始,到后来不少人又来问默默怎么学PHP,不管默默是新手,还是老鸟,似乎总是感觉摸不出一条清晰的脉络来,不过,默默既然学会了PHP,那么我走的这条路或多或少的有一定借鉴性. PHP的背景恐怕就不用默默赘言了,我相信大家选择一种语言,并不是看它的背景和悠久历史,更重要的是看它的

  • 盘点网络编程必须要知道的基础知识

    在Java编程开发中,网络通信的开发是很重要的一部分,它是两台或多台计算机进行网络的基础,网络程序编写的目的也就是为了与其他计算机之间进行网络通信,所以今天大灰狼就来和大家分享一下Java网络通信中要的知道的一些知识. 其实在Java的发展过程中,为了更加方便的进行网络通信,开发者逐渐的将网络编程中所需要的一些内容封装成了不同的类,用户在进行网络编程时,只需要创建相应类的对象,并且调用相应的方法即可. 首先我们来了解一下网络的通信结构. 局域网和因特网 在网络通信中,两台计算机的信息传输可以使用

  • 详解python的网络编程基础

    目录 一.什么是网络编程 二.socket 1.socket的基本语法 2.与socket有关的一些函数 服务端函数 客户端函数 公共函数 三.程序需求 服务端分析 客户端分析 四.代码升级 加上通信循环 加上连接循环以及完善 总结 一.什么是网络编程 网络编程涉及到一些计算机基础知识,还跟你的电脑系统有关,mac os/Linux和windows是不同的,由于我用的是windows,所以以下所有都是windows操作系统的适用的,并且里面的字符编码windows和mac os也是不同的,这里我

  • Java 网络爬虫基础知识入门解析

    前言 说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬虫而且还能做的非常好,在开源社区中有不少优秀的 Java 网络爬虫框架,例如 webmagic .我的第一份正式工作就是使用 webmagic 编写数据采集程序,当时参与了一个舆情分析系统的开发,这里面涉及到了大量网站的新闻采集,我们就使用了 webmagic 进行采集程序的编写,由于当时不知

  • java并发编程专题(一)----线程基础知识

    在任何的生产环境中我们都不可逃避并发这个问题,多线程作为并发问题的技术支持让我们不得不去了解.这一块知识就像一个大蛋糕一样等着我们去分享,抱着学习的心态,记录下自己对并发的认识. 1.线程的状态: 线程状态图: 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权. 3.运行状态(Running):就绪状态的线程获取了CPU,执行程序代码. 4

  • C#网络编程基础之进程和线程详解

    在C#的网络编程中,进程和线程是必备的基础知识,同时也是一个重点,所以我们要好好的掌握一下. 一:概念 首先我们要知道什么是"进程",什么是"线程",好,查一下baike. 进程:是一个具有一定独立功能的程序关于某个数据集合的一次活动.它是操作系统动态执行的基本单元, 在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 线程:是"进程"中某个单一顺序的控制流. 关于这两个概念,大家稍微有个印象就行了,防止以后被面试官问到. 二:进程

  • java网络编程基础知识介绍

    网络基础知识 1.OSI分层模型和TCP/IP分层模型的对应关系 这里对于7层模型不展开来讲,只选择跟这次系列主题相关的知识点介绍. 2.七层模型与协议的对应关系 网络层 ------------ IP(网络之间的互联协议) 传输层 ------------ TCP(传输控制协议).UDP(用户数据报协议) 应用层 ------------ Telnet(Internet远程登录服务的标准协议和主要方式).FTP(文本传输协议).HTTP(超文本传送协议) 3.IP地址和端口号 1.ip地址用于

  • Netty网络编程零基础入门

    目录 OSI七层网络模型 Socket技术 TCP协议 Java语言创建socket应用 http协议 OSI七层网络模型 应用层:Http协议.文件服务器.邮件服务器 表示层:数据转换解决不同系统中间通讯的兼容问题 会话层:建立与应用程序的会话连接(socket) 传输层:提供端口号(区分不同的应用程序)和传输的协议(TCP和UDP) 网络层:为数据实现路由(路由器.交换机) 数据链路层:对传输的地址的帧以及错误的检测. 物理层:以二进制的形式在物理机器.上实现传输.(光纤.专线.各种物理介质

  • Java网络编程基础篇之单向通信 原创

    在网络编程中如果只要求客户机向服务器发送消息,不要求服务器向客户机发送消息,称为单线通信.客户机套接字和服务器套接字链接成功后,可估计通过输出流发送数据,服务器则通过输入流接受数据,下面是简单的单向通信的例子. 实例1:本实例是一个TCP服务器端程序,在 getserver() 方法中建立服务器套接字,调用getClienMessage()方法获取客户端信息.代码如下: import java.io.BufferedReader; import java.io.IOException; impo

  • 从零开始学Python第八周:详解网络编程基础(socket)

    一,Socket编程 (1)Socket方法介绍 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 套接字是一个双向的通信信道的端点.套接字可能在沟通过程,进程之间在同一台机器上,或在不同的计算机之间的进程 要创建一个套接字,必须使用Socket模块的socket.socket()方法 在socket模块中的一般语法: s = socket.socket(sock

  • Java网络编程基础详解

    目录 网络编程 1.1 概述 1.2.网络通信的要素 1.网络编程中有两个主要的问题 2.网络编程中的三要素 1.3.IP 1.4.端口 1.5.通信协议 UDP协议 TCP协议 1.6.TCP模拟通信 客户端 服务器 文件上传 1.7.UDP 1.8.URL 实例: 总结 网络编程 1.1 概述 1.2.网络通信的要素 如何实现网络通信? 1.网络编程中有两个主要的问题 如何定位到网络上的一台或者多台主机 使用cmd-->ping命令,ping一个域名,可以看到访问的主机的IP地址 [外链图片

随机推荐