网络编程概念总结

计算机网路:

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

从逻辑功能上看,计算机网络是以传输信息为基础目的,用通信线路将多个计算机连接起来的计算机系统的集合,一个计算机网络组成包括传输介质和通信设备。

虽然网络类型的划分标准各种各样,但是从地理范围划分是一种大家都认可的通用网络划分标准。按这种标准可以把各种网络类型划分为局域网、城域网、广域网和互联网四种。局域网一般来说只能是一个较小区域内,城域网是不同地区的网络互联,不过在此要说明的一点就是这里的网络划分并没有严格意义上地理范围的区分,只能是一个定性的概念。


网络分层:

为了减少网络设计的复杂性,绝大多数网络采用分层设计方法。所谓分层设计方法,就是按照信息的流动过程将网络的整体功能分解为一个个的功能层,不同机器上的同等功能层之间采用相同的协议,同一机器上的相邻功能层之间通过接口进行信息传递。


计算机网络是指由通信线路互相连接的许多自主工作的计算机构成的集合体,各个部件之间以何种规则进行通信,就是网络模型研究的问题。

网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型。这两个模型在网络中应用最为广泛。AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA


开放系统互连参考模型(Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,

为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。

基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层、传输层(主机到主机)、和应用层。

1.应用层

应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等.

2.传输层

传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP).

TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据传输服务.

3.网际互联层

网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。

IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。

4.网络接入层(即主机-网络层)

网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。


网络编程:

什么是套接字:

源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务.

什么是网络编程:

    通过使用套接字来达到进程间通信目的的编程就是网络编程.

 进程之间的通信:

      1):在同一台电脑上,A进程和B进程相互通信.

     2):在网络中(外网/内网),A电脑中的aa程序和B电脑中的bb程序相互通信(有网络连接).

为什么需要网络编程:

      1):如果没有网络,只能玩单机游戏.(斗地主,三国杀,CS等)

      2):有了网络,QQ游戏等.

这个章节所有的API都在:java.net包.

网络编程三要素:

      1):IP地址.

      2):端口.

      3):协议:规则,数据传递/交互规则.



网络基础

ip地址:


网络之间互连的协议(IP)AAAAA是InternetProtocol的外语缩写,中文缩写为“网协”.在Java中使用InetAddress类表示.

IP的版本:

  IPv4:192.168.10.30

  IPv6:1080:0:0:0:8:800:200C:417A 

IP地址编址方案:IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用。

A类10.0.0.0--10.255.255.255

B类172.16.0.0--172.31.255.255

C类192.168.0.0--192.168.255.255

----------------------------------------------

在Java中,使用InetAddress类来表示IP地址.

表示本机:

   方式1:本机IP

  方式2:127.0.0.1

  方式3:localhost


中文API解释:

java.net
类 InetAddress

java.lang.Object继承者 java.net.InetAddress
所有已实现的接口:
Serializable
直接已知子类:
Inet4Address, Inet6Address

方法:

方法摘要
 booleanequals(Object obj)
          将此对象与指定对象比较。
 byte[]getAddress()
          返回此 InetAddress 对象的原始 IP 地址。
static InetAddress[]getAllByName(String host)
          在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。
static InetAddressgetByAddress(byte[] addr)
          在给定原始 IP 地址的情况下,返回 InetAddress 对象。
static InetAddressgetByAddress(String host, byte[] addr)
          根据提供的主机名和 IP 地址创建 InetAddress。
static InetAddressgetByName(String host)
          在给定主机名的情况下确定主机的 IP 地址。
 StringgetCanonicalHostName()
          获取此 IP 地址的完全限定域名。
 StringgetHostAddress()
          返回 IP 地址字符串(以文本表现形式)。
 StringgetHostName()
          获取此 IP 地址的主机名。
static InetAddressgetLocalHost()
          返回本地主机。
 inthashCode()
          返回此 IP 地址的哈希码。
 booleanisAnyLocalAddress()
          检查 InetAddress 是否是通配符地址的实用例行程序。
 booleanisLinkLocalAddress()
          检查 InetAddress 是否是链接本地地址的实用例行程序。
 booleanisLoopbackAddress()
          检查 InetAddress 是否是回送地址的实用例行程序。
 booleanisMCGlobal()
          检查多播地址是否具有全局域的实用例行程序。
 booleanisMCLinkLocal()
          检查多播地址是否具有链接范围的实用例行程序。
 booleanisMCNodeLocal()
          检查多播地址是否具有节点范围的实用例行程序。
 booleanisMCOrgLocal()
          检查多播地址是否具有组织范围的实用例行程序。
 booleanisMCSiteLocal()
          检查多播地址是否具有站点范围的实用例行程序。
 booleanisMulticastAddress()
          检查 InetAddress 是否是 IP 多播地址的实用例行程序。
 booleanisReachable(int timeout)
          测试是否可以达到该地址。
 booleanisReachable(NetworkInterface netif, int ttl, int timeout)
          测试是否可以达到该地址。
 booleanisSiteLocalAddress()
          检查 InetAddress 是否是站点本地地址的实用例行程序。
 StringtoString()
          将此 IP 地址转换为 String
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait

练习代码


端口(port):

"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。

协议端口:

如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。


结论:

    1):在同一台电脑中端口不能重复,若重复,则报错端口冲突

    2):如果我们需要自定义端口号,建议使用10000以A上的.

协议:

协议(protocol),网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。

网络协议,也可简称协议,通常由三要素组成:

(1)语法:即数据与控制信息的结构或格式;

(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;

(3)时序(同步),即事件实现顺序的详细说明。

-------------------------------------------------------------

http——超文本传输协议资源
https——用安全套接字层传送的超文本传输协议
ftp——文件传输协议
mailto——电子邮件地址
file——当地电脑或网上分享的文件


URI:

统一资源标识符(UniformResource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串。

包含:主机名,标识符,相对URI.

如:http://java.sun.com:80/j2se/1.3/hello.html

URL:

统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址

互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

-----------------------------

在Java中,URI表示一个统一资源的标识符,不能用于定位任何资源,唯一的作用就是解析.

而URL则包含一个可以打开到达该资源的输入流,可以简单理解URL是URI的特例.

-------------------------------------------------------------------------------

简单理解: URIURL都表示一个资源路径.

创建URL对象:

URL(String protocol, String host, intport, String file) 



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构实验之图论八:欧拉回路

题目描述 在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来。 能否走过这样的七座桥,并且每桥只走一次?瑞士数学家欧拉最终解决了这个问题并由此创立了拓扑学。欧拉通过对七桥问题的研究,不仅圆满地回答…

socket阻塞与非阻塞,同步与异步

转自:http://blog.csdn.net/hguisu/article/details/7453390 socket阻塞与非阻塞,同步与异步 作者:huangguisu 1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调…

多线程笔记补充之线程通信wait和notify方法以及Lock和Condition接口的使用

线程通信-wait和notify方法介绍: java.lang.Object类提供类两类用于操作线程通信的方法. wait():执行该方法的线程对象释放同步锁,JVM把该线程存放到等待池中,等待其他的线程唤醒该线程. notify:执行该方法的线程唤醒在等待池中等待的任意一个线程,把线程转到锁池中等待. notif…

CRT

当C Runtime函数库于20世纪70年代产生出来时,PC的内存容量还很小,多任务是个新奇观念,更别提什么多线程了。因此以当时产品为基础所演化的C Runtime函数库在多线程(multithreaded)的表现上有严重问题,无法被多线程程序…

java多线程笔记补充之线程的生命周期

多线程通信的时候很容易造成死锁,死锁无法解决,只能避免: 当A线程等待由B线程持有的锁,而B线程正在等待A线程持有的锁时,发生死锁现象,JVM不检测也不试图避免这种情况,所以程序员必须保证不导致死锁. 避免死锁法则: 当多个线程都要访问共享的资源A,B,C时,保证每一个线程都按照…

java多线程笔记补充之 线程控制操作

线程休眠:让执行的线程暂停一段时间,进入计时等待状态。 方法:staticvoid sleep(long millis) 调用sleep后,当前线程放弃CPU,在指定时间段之内,sleep所在线程不会获得执行的机会。 此状态下的线程不会释放同步锁/同步监听器. 该方法更多的用…

java5新特性静态引用、foreach、自动装箱和泛型枚举以及可变参数的总结

静态引用 导入(import)表示去找哪一个类,去哪一个包下去找哪些被使用到的类。 在java中有一个语言核心包:java.lang. 使用java.lang包中的API,不需要引用,直接能找到,但是,如果我们使用到的API不呼吁java.l…

java8新特性lambda表达式、函数式编程、方法引用和接口默认方法以及内部类访问外部变量

一提到java是一种什么语言? 大多数人肯定异口同声的说是一门面向对象的语言,这种观点从我们开始学java就已经根深蒂固了,但是学到java8新特性函数式编程的时候,我才知道java并不是纯面向对象的语言。 lambda表达式的详细教程 lam…

javaWeb回忆思维导图

出处:https://blog.csdn.net/jackfrued/article/details/42617675 https://www.cnblogs.com/xieyupeng/p/6961667.html

Spring详细导包截图以及IOC和DI思想

思想 IOC DI Spring中的工厂(容器) ApplicationContext: BeanFactory(过时): BeanFactory和ApplicationContext区别 BeanFactory: 1.Spring原始接口,针对原始接口实现类功能较为单一 2.是在getBean的时候才会生成类的实例…

毕业两年的我--奋斗中的程序员

又到一年毕业季,不知不觉,自己毕业快两年了,在这两年中,从一位小白程序员蜕化到现在的拥有两年经验的C程序员,这两年里面,不敢说成长有多快,进步有多大,但是感觉很踏实,每…

spring配置讲解

Bean元素 Bean元素进阶 scope属性: 1.singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例 2.prototype:多例原型.被标识为多例的对象,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的. 3.request…

情商低的七种表现,你占了几个

你身边有没有这样的人:大家刚刚还聊的热火朝天,却在他进门的瞬间,整场“冷冻结冰”,大家都各忙各的,避免与他交流。我们称这样的人为“冷场帝”。那么,“冷场帝”是如何养成的?这样的人通常情商…

spring属性注入

注入方式 set方法注入 构造函数注入 p名称空间注入 spel注入(#表示理解为引用) 练习代码&#xff1a; <!-- 第二天 set注入 index:索引 ref:引用对象 type:参数类型--><bean name"person" class"com.spring.bean.Person"><constructor-a…

你所不知道的C和C++运行库

转自&#xff1a;http://blog.csdn.net/ithzhang/article/details/20160009 你所不知道的C和C运行库    周五晚&#xff0c;小雨&#xff0c;少见的未加班。无聊&#xff0c;遂准备写一篇博客&#xff0c;介绍一下C和C运行库&#xff0c;只因发现工作几年的人对此一知半解的…

使用注解配置spring如@Compnent、@Service、@Consroller、@scope和@value的使用

步骤 1.导包42spring-aop如图&#xff1a;为学习到该阶段需要用到的包(里面的aoptest是spring和junit整合测试的时候用到的)2.为主配置文件引入新的命名空间(约束)3.开启使用注解代理配置文件<?xml version"1.0" encoding"UTF-8"?> <beans xmln…

java实现深度优先搜索 (DFS) 算法

度优先搜索&#xff08;Depth First Search&#xff0c;DFS&#xff09;算法是一种用于遍历或搜索图或树的算法。这种算法从一个节点开始&#xff0c;沿着一条路径尽可能深地搜索&#xff0c;直到遇到不能继续前进的节点时返回上一个节点&#xff0c;然后继续搜索其他路径。具体…

spring整合JDBC

文章目录spring提供了很多模板整合Dao技术spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术.如何用Spring中的jdbc模板对数据库操作&#xff1a;spring配置进阶内容JDBCDaoSupport的使用spring提供了很多模板整合Dao技术 因为在jdbc、Hibernate、Mybatis中都有对数据…

spring中aop事务

文章目录事务为什要用到Spring中AOP事务事物的特性 ACID事务并发问题事务的隔离级别spring事务管理事务操作事务操作对象spring管理事务的属性介绍spring管理事务方式编码式xml配置(aop)注解配置Transactional注解在方法上添加Transactional注解在类上添加实际案例xml配置注入a…