学习笔记之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
- 学习笔记之JavaSE(49)--网络编程1
- JavaSE学习笔记--网络编程之UDP
- JavaSE学习笔记--网络编程之TCP
- JavaSE学习笔记之网络编程
- 学习笔记之JavaSE(50)--网络编程2
- 学习笔记之JavaSE(51)--网络编程3
- 学习笔记之JavaSE(52)--网络编程4
- 学习笔记之JavaSE(53)--网络编程5
- 【JavaSE学习笔记】- 网络编程
- 学习笔记之JavaSE(10)--面向对象编程1
- JavaSE学习笔记_20:Java网络编程
- 黑马程序员-javaSE学习之网络编程
- JAVASE之网络编程
- 学习笔记之JavaSE(11)--面向对象编程2
- 学习笔记之JavaSE(12)--面向对象编程3
- 学习笔记之JavaSE(13)--面向对象编程4
- 学习笔记之JavaSE(14)--面向对象编程5
- 学习笔记之JavaSE(15)--面向对象编程6
- 消息队列RabbitMQ与Spring
- Android使用百度地图开发时,出现定位无反应。log里出现162错误代码
- pyqt5 打开文件
- 最佳调度问题 Time Limit:10000MS Memory Limit:65536K Total Submit:89 Accepted:36 Case Time Limit:1000MS
- [leetcode] 394. Decode String
- 学习笔记之JavaSE(49)--网络编程1
- php 不常见的读取文件的方法
- UVa 1151 Buy or Build
- 贝塞尔曲线
- postgreSQL的实用程序
- iOS 开发缓存机制之一内存缓存机制
- 做的最简单的APP-计数器
- Failed to resolve: com.android.support.fragment_mine.espresso:espresso-core:2.2.2
- [LeetCode]Surrounded Regions