java网络编程详解(分层,TCP/IP,网络基础,协议)

时间:2022-03-21 01:31:21
计算机网络:
计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
从逻辑功能上看,计算机网络是以传输信息为基础目的,用通信线路将多个计算机连接起来的计算机系统的集合,一个计算机网络组成包括传输介质和通信设备。
虽然网络类型的划分标准各种各样,但是从地理范围划分是一种大家都认可的通用网络划分标准。按这种标准可以把各种网络类型划分为局域网、城域网、广域网和互联网四种。局域网一般来说只能是一个较小区域内,城域网是不同地区的网络互联,不过在此要说明的一点就是这里的网络划分并没有严格意义上地理范围的区分,只能是一个定性的概念。
网络分层:

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

java网络编程详解(分层,TCP/IP,网络基础,协议)

开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,
为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
计算机网络是指由通信线路互相连接的许多自主工作的计算机构成的集合体,各个部件之间以何种规则进行通信,就是网络模型研究的问题。
网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型。这两个模型在网络中应用最为广泛。
java网络编程详解(分层,TCP/IP,网络基础,协议)

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):协议:规则,数据传递/交互规则.

java网络编程详解(分层,TCP/IP,网络基础,协议)

网络基础:

java网络编程详解(分层,TCP/IP,网络基础,协议)

网络之间互连的协议(IP)是Internet Protocol的外语缩写,中文缩写为“网协”.在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

java网络编程详解(分层,TCP/IP,网络基础,协议)
java网络编程详解(分层,TCP/IP,网络基础,协议)

端口(port):
"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。
协议端口:
如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。

java网络编程详解(分层,TCP/IP,网络基础,协议)
结论:
    1):在同一台电脑中端口不能重复,若重复,则报错端口冲突
    2):如果我们需要自定义端口号,建议使用10000以上的.
协议:
协议(protocol),网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。
网络协议,也可简称协议,通常由三要素组成:
(1)语法:即数据与控制信息的结构或格式;
(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
(3)时序(同步),即事件实现顺序的详细说明。
-------------------------------------------------------------
http——超文本传输协议资源
https——用安全套接字层传送的超文本传输协议
ftp——文件传输协议
mailto——电子邮件地址
file——当地电脑或网上分享的文件

java网络编程详解(分层,TCP/IP,网络基础,协议)
URI:
统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串。
包含:主机名,标识符,相对URI.
如:http://java.sun.com:80/j2se/1.3/hello.html
URL:
统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
在Java中,URI表示一个统一资源的标识符,不能用于定位任何资源,唯一的作用就是解析.
而URL则包含一个可以打开到达该资源的输入流,可以简单理解URL是URI的特例.
简单理解: URI和URL都表示一个资源路径.
创建URL对象:
URL(String protocol, String host, int port, String file)

URLEncoder和URLDecoder用于完成普通字符串和application/x-www-form-urlencoded MIME字符串之间的相互转换.
java网络编程详解(分层,TCP/IP,网络基础,协议)

application/x-www-form-urlencoded MIME编码:
编码和解码:
  在Web的浏览器中,不同的浏览器的编码和解码规则是不一样的.
   对于W3C浏览器:遵循W3C组织规范的浏览器,(非IE).
               编码:byte[] data = “任小龙”.getByte(String charsetName);
               解码:String  str = new String(data, String charsetName);
   对于IE浏览器:
              编码使用的application/x-www-form-urlencoded MIME机制.
java网络编程详解(分层,TCP/IP,网络基础,协议)

传输层协议:
TCP和UDP的区别:
TCP :面向连接(经历三次握手)、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。 服务端和客户端
UDP:面向非连接、传输不可靠(丢包[数据丢失])、用于传输少量数据(数据报包模式)、速度快。发送端和接收端

java网络编程详解(分层,TCP/IP,网络基础,协议)

TCP协议:

java网络编程详解(分层,TCP/IP,网络基础,协议)

UDP协议:

java网络编程详解(分层,TCP/IP,网络基础,协议)