学习笔记之JavaSE(49)--网络编程1

来源:互联网 发布:淘宝死店还能活吗 编辑:程序博客网 时间:2024/06/04 18:07

今天学习的内容是网络参考模型、IP地址与端口号和传输协议


一、网络参考模型

如果想要完成客户端与服务器之间的数据交互,就要用到网络通信。 为了解决不同结构的网络的互联问题,国际标准化组织ISO制定了OSI网络参考模型,将复杂的网络通信问题化为若干个容易处理的小问题。而TCP/IP网络参考模型除了层的划分更加简单,基本内容是与OSI模型相同的。实际上,OSI模型和TCP/IP模型都是在描述网络通信的过程:客户端发送的数据从顶层到底层经过层层“打包”之后传输给服务器,服务器再将数据从底层到顶层进行层层“拆包”最终获取数据。OSI模型和TCP/IP模型的图例如下:


目前通用的是TCP/IP四层模型(Internet使用的就是TCP/IP模型)。其中:

  • 网络接口层作为最底层,通常不用考虑
  • Java网络编程主要是结合多线程IO流网络层/传输层进行开发
  • 框架技术主要用于应用层开发(框架已经将多线程、IO流和网络层/传输层进行了封装

二、IP地址与端口号

想要进行客户端与服务器的交互,前提条件就是要先知道两项关于服务器的信息:它在哪里以及用哪个端口来收发数据,也就是IP地址端口号(它们属于网络层)。

在Internet网络上存在着数以亿计的计算机,每一台计算机都使用网络为其分配的Internet地址代表自己,这个地址就是IP地址,IP地址是唯一的!由于现在网络设备太多,造成IP地址资源紧张,于是就出现了外网IP内网IP。通常只为某个路由器分配一个外网IP,再为连接此路由器的所有设备分配一个动态的内网IP。通过使用NAT(Network Address Translation,网络地址转换)技术可以转换内网IP和外网IP,从而可以节省IP资源。目前IP地址使用四个字节的十进制数来表示,称为IPv4。目前人们正在试验使用16个字节来表示IP地址,这就是IPv6。

端口号则是用于标识进程的逻辑地址,一个指定的端口不能被多个进程共用!!如果没有端口号,服务器就无法分辨客户端要连接到哪个应用程序。一个IP地址有65536个端口可用(0~65535),其中0~1023已经被保留给特定的进程(比如HTTP的端口号是80)。顺便一提,防火墙的原理就是禁用某端口~

三、传输协议

传输层中常见的传输协议有TCP协议(Transmission Controll Protocol,传输控制协议)和UDP协议(User Datagram Protocol,用户数据报协议)。TCP协议和UDP协议的区别为:
  • TCP协议需要建立连接,是可靠协议;UDP协议将数据、源和目的地封装成数据报,不需要建立连接,是不可靠协议
  • TCP协议可以进行大量的数据传输;UDP协议的每个数据报大小必须在64k之内
  • TCP协议需要建立连接,速度较慢;UDP协议不需要建立连接,速度较快

比如QQ使用的就是UDP协议,对方不在线也可以发信息。

0 0
原创粉丝点击