网络模型
OSI(Open System Interconnection开放系统互连)参考模型
TCP/IP参考模型
网络通讯要素
IP地址
端口号
传输协议
OSI七层协议的作用简单描述成以下形式:
应用层 与用户应用进程的接口
表示层 数据格式的转换
会话层 会话管理与数据传输的同步
传输层 端到端经网络透明地传送报文
网络层 分组传送,路由选择
数据链路层 在链路上无差错地传送帧
物理层 经物理媒体透明传送比特流
网络通讯要素
IP地址:InetAddress
不易记忆,可用主机名
本地回环地址:127.0.0.1 主机名:localhost
在日常应用中的计算机地址是用"192.168.0.1","www.it315.org"等字符串格式来表示的。
端口号:用于标识进程的逻辑地址,不同进程的标识
有效端口:0~65535,其中0~1024是系统使用或者保留端口。
传输协议:通讯的规则
常见协议:TCP,UDP
[html] view plaincopy
<span style="font-family:Microsoft YaHei;">public static void main(String[] args) throws UnknownHostException{
//ip地址对象:InetAddress
//获取本地主机地址对象
// InetAddress ip = InetAddress.getLocalHost();
//获取其他主机的地址对象
InetAddress ip = InetAddress.getByName("198.168.0.1");
System.out.println(ip.getHostAddress() + ":" + ip.getHostName());
}</span>
域名:网站的网址
域名解析:将域名转换成服务器的IP地址的过程。
域名解析图:
端口:其实就是队,操作系统为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据报的进程需要开启它自己的端口,发送数据报的进程也需要开启端口,这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口
网络中常用的端口号:
服务 端口号
Mysql 数据库服务 3306
SMTP 25
HTTP 80
SQL server 1433
Oracle 1521
DNS 53
TCP协议和UDP协议:
TCP协议:传输控制协议
UDP协议:用户数据报协议
TCP将数据分成数据报,用能够到达目的地的路径信息连行包装,接收端则将这些数据进行重组。它提供可靠的、面向连接的数据报传递服务。
TCP协议位于IP协议的上层,为数据提供错误校验,流量控制及序列信息用以补充IP协议的不足。
UDP是无连接的服务,优点是灵活方便和比较迅速,但不能防止报文的丢失、重复或失序,特别适合于传送少量零星的报文。比如DNS就是基于UDP。
TCP与UDP的区别:
TCP 提供面向连接的、可靠的数据流传输,而 UDP 提供的是非面向连接的、不可靠的数据流传输。
TCP 传输单位称为报文段, UDP 传输单位称为用户数据报。
TCP 注重数据安全性, UDP 数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
TCP客户端程序与TCP服务器端程序的交互过程:
(1)服务器程序创建一个ServerSocket,然后调用accept方法等待客户来连接。
(2)客户端程序创建一个Socket并请求与服务器建立连接。
(3)服务器接收客户的连接请求,并创建一个新的Socket与该客户建立专线连接。
(4)建立了连接的两个Socket在一个单独的线程(由服务器程序创建)上对话。
(5)服务器开始等待新的连接请求,当新的连接请求到达时,重复步骤(2)到步骤(5)发的过程。
Socket
Socket:就是为网络服务提供的一种机制。通信的两端都有Socket。
网络通信其实就是Socket间的通信。数据在两个Socket间通过IO传输。
服务器端接收到客户端Scoket的连接请求时会通过accept()方法返回一个与客户端Socket建立专线连接的服务器端的Socket对象,不能使用Socket构造方法创服务器端的Socket对象。当服务器端的Socket对象与客户端Socket对象建立专线连接后,它们以网络字节流的形式进行数据交换,Socket的getInputStream与getOutputStream分别用于返回Socket的输入流对象和输出流对象。
下面一个图解很容易明白:
URL
URL代表一个统一资源定位符,它是指向互联网“资源”的指针。其中统一资源代表所有资源。能直接定位到网络的某一个资源上。
其中URL类有一个方法是getConnection()表示打开URL资源的连接,这时就可以方便的取资源。内部封装了Socket。getConnection抽象类代表应用程序和URL之间的通信连接。
这个类的实例可以用在读取和写入此URL引用的资源。
其中这些都要基于协议才能顺利的传输完成。比如我们平时用的最多的HTTP协议,它是
用来在Internet上传送超文本的传送协议。它是运行在TCP/IP协议族之上的HTTP应用协议,它可以使浏览器更加高效,使网络传输减少。任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用用户请求。您的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由URL指定的IP地址。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。
HTTP协议分为HTTP1.1和HTTP1.0,其中的主要区别如下:
1.HTTP/1.0协议使用非持久连接,即在非持久连接下,一个tcp连接只传输一个Web对象,;
2.HTTP/1.1默认使用持久连接(然而,HTTP/1.1协议的客户机和服务器可以配置成使用非持久连接)。
在持久连接下,不必为每个Web对象的传送建立一个新的连接,一个连接中可以传输多个对象! |
|