目
录
二.网络模型(OSI七层参考模型和TCP/IP四层参考模型)
一.什么是计算机网络?什么是网络编程?
1.计算机网络
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下, 实现资源共享和信息传递的计算机系统 。通俗点也就是让分布在不同地方的计算机通过网线无限等一些网络设备连接在一起,形成网络,网络中每台计算机相互之间都能进行通信。
2.网络编程
网络编程就是用来 实现网络互连的不同计算机上运行的程序间可以进行数据交换。
二.网络模型(OSI七层参考模型和TCP/IP四层参考模型)
1.网络模型的分类
计算机网络之间以何种规则进行通信,就是网络模型所研究问题。网络模型有各中样式的!但一般网络模型是指OSI七层参考模型和TCP/IP四层参考模型。
2.OSI七层参考模型
OSI(Open System Interconnection开放系统互连)七层参考模型,一共分为 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层 这七层。
- 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0)。这一层的数据叫做比特。
- 数据链路层:主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装。常把这一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。
- 网络层:主要将从下层接收到的数据进行IP地址(例192.168.0.1)的封装与解封装。在这一层工作的设备是路由器,常把这一层的数据叫做数据包。
- 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
- 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)
- 表示层:主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够能识别的东西(如图片、声音等)。
- 应用层: 主要是一些终端的应用,比如说FTP(各种文件下载),WEB(IE浏览),QQ之类的(可以把它理解成我们在电脑屏幕上可以看到的东西.就是终端应用)。
3. TCP/IP四层参考模型
TCP/IP四层参考模型这样分为 网络访问层 (包含物理层 ,和数据链路层), 网际层, 传输层,应用层 (包含应用层, 表示层 ,会话层).其中每个层的作用功能与OSI模型一致.
三.网络编程的三要素
网络编程的三要素有:IP地址,端口号 ,传输协议.
- IP地址: 网络中设备的标识,不易记忆,可用主机名,为了标识网络中一台计算机的唯一性
- 端口号: 用于标识进程的逻辑地址,不同进程的标识 ,它其实是每一个使用网卡的程序的编号
- 传输协议: 通讯的规则常见协议:TCP,UDP
1.关于IP地址
所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。 用十进制表示出来!例如255.255.255.0 。 IP地址的组成=网络地址+主机地址 。
IP地址可分为三类:A类地址,B类地址,C类地址.
- A类IP地址: 第一段号码为网络地址,剩下的三段号码为本地计算机的号码(1.0.0.1---127.255.255.254) 其中10.X.X.X是私有地址(私有地址就是在互联网上不使用,而被用在局域网络中的地址)并且127.X.X.X是保留地址,用做循环测试用的。
- B类IP地址: 前二段号码为网络地址,剩下的二段号码为本地计算机的号码(128.0.0.1---191.255.255.254)其中172.16.0.0---172.31.255.255是私有地址。
- C类IP地址: 前三段号码为网络地址,剩下的一段号码为本地计算机的号码(192.0.0.1---223.255.255.254)其中192.168.x.x是私有地址
补充: 127.0.0.1 是回环地址,可用于测试本机的网络是否有问题. ping 127.0.0.1 。 DOS命令 ipconfig:查看本机IP地址并且 xxx.xxx.xxx.255 是广播地址
2.关于端口号
端口分为物理端口和逻辑端口
- 物理端口: 网卡口
- 逻辑端口: 我们需要用的端口号端口就是逻辑端口。每个网络程序都会有一个逻辑端口,用于标识进程的逻辑地址以及不同进程的标识。有效端口范围在0~65535(两个字节),其中0~1023的端口为系统使用或保留端口。
那么问题来啦!!!同一台主机上有许多程序都需要用到网络,比如咱们一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,又是怎么知道它是表示网页的内容,还是表示在线聊天的内容呢?
也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。而这个参数就叫做 "端口"(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。
3.关于传输协议
协议有很多种的哈!常见的传输协议为 TCP,UDP。还有IP协议,其作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。
当你和好朋友聊天时,数据发生了如下的变化!
四.常用的InetAddress类
为了方便我们对IP地址的获取和操作,java提供了一个类InetAddress 供我们使用, 此类表示互联网协议 (IP) 地址 。常见的方法如下:
- public static InetAddress getByName(String host) //通过主机名获得主机IP地址,或者填入IP地址获得该主机名
- public String getHostAddress() //获取IP
- public String getHostName() //获取主机名
- getLocalHost(); //获得一个InetAddress对象,该对象含有本地机的域名和IP地址
补:获取主机名的DOS 命令 :hostname.
五.Socket通信原理
Socket就是套接字,是应用层与传输层的产物,它把传输层的很多复杂操作封装成一些简单的接口,来让应用层调用以此来实现进程在网络中的通信,Socket 是对端口通信开发的工具,它要更底层一些。并且Socket是由IP地址和端口号组合在一起构成网络上唯一标识的套接字. Socket=IP+端口号.
Socket原理机制:
- 通信的两端都有Socket。
- 网络通信其实就是Socket间的通信。
- 数据在两个Socket间通过IO传输。
(小编也在努力学习更多哟!以后再慢慢分享的啦!)
希望对友友们有所帮助!!!!