Java-网络编程理论
网络编程
- 网络编程的三要素:IP地址,端口号,协议
举例:
某一天,阿涛喜欢上一个女孩,他想和这个女孩表白,怎么办?
1、首先他要去找到这个女生 -- IP地址
2、找到这个女孩之后,他要开始表白了,跟她说话,对着耳朵说话。 -- 端口号
3、他要说什么呢?“I Love You”
但是呢,那个女生没有学过英文,听不懂。
他就没有必要说英文,说她能听懂的语言,说“我爱你” -- 协议 (TCP,UDP)
网络编程三要素
1.IP地址
- 计算机在网络中的唯一标识。
查看windows中ip地址:win + R,输入cmd,输入ipconfig查看 //192.168.10.112
查看Mac中的ip地址:终端窗口中,输入ifconfig查看- IP地址应该也是在计算机中进行存储的,但是呢,计算机只能识别二进制的数据,这里IP应该实际上也是二进制才对的。
IP:192.168.10.112
换成二进制:11000000.10101000.00001010.01110000
实际上存储的时候是没有.的:11000000101010000000101001110000,但是呢,我们今后的学习过程中,难免会遇到配置ip地址的时候
,记忆的时候拿着这个二进制的ip地址去记忆使用,表示起来会很麻烦,所以,为了更方便的表达ip地址,国际上规定我们就把ip地址的每一个
字节上的数据换算成十进制的,然后在字节与字节之间使用.来进行分割,这样的表示法:点分十进制表示法。
IP地址的组成:网络号段 + 主机号段组成
IP地址的分类:IP地址主要分为A,B,C,D,E五类,其中A,B,C类是比较常用的,D,E类为特殊地址。
- A类地址(由一个网络号段和3个主机号段组成)A类地址第一个字节为网络地址(其中最高位固定是0),另外三个字节为主机地址 A类地址的范围是:1.0.0.0 ~ 126.255.255.255,其中0和127作为特殊地址 A类网络默认的子网掩码为255.0.0.0,也可以写成 /8
A类网络中最大可以承受的主机数量:256256256-2.(减去的是1个主机为为0的网络地址和1个广播地址)
在计算网络中,主机ID全部为0的地址为网络地址,而主机ID全部为255的地址为广播地址,这两个地址是不能分配给主机用的。- 2)B类地址(由两个网络号段和两个主机号段组成)
B类地址第一个字节(最高位固定为10)和第二个字节为网络号段,另外两个字节为主机号段
B类地址的范围是:128.0.0.0 ~ 191.255.255.255
B类网络默认的子网掩码是255.255.0.0.也可写成 /16
B类网络可以最大承受主机数量为:256*256-2- 3)C类地址(由三个网络号段和一个主机号段组成)
C类地址第一个字节(最高为固定是110),第二个字节,第三个字节为网络号段,第四个字节为主机号段
C类地址范围:192.0.0.0 ~ 223.255.255.255
C类网络默认的子网掩码255.255.255.0 也可写成 /24
C类网络可以承受最大主机数:256-2- 4)D类 224.0.0.1---239.255.255.254
- 5)E类 240.0.0.1---247.255.255.254
几个特殊的IP地址
- 1、localhost == 本机 == 127.0.0.1
127.0.0.1 本地回环地址,可以用来测试本机的网络是否有问题。
测试网络是否联通:ping + ip地址/主机名2、广播地址
x.x.x.255
3、网络地址
x.x.x.0
4、查看ip地址:
Windows: ipconfig
Mac:ifconfig
Linux:
centOS6: ifconfig
centOS7:ip addr
2.端口号
- 端口号:
物理端口 网卡口
逻辑端口 我们指的就是逻辑端口
A:每个网络程序都会至少有一个逻辑端口
B:用于标识进程的逻辑地址,不同进程的标识
C:有效端口:065535,其中01024系统使用或保留端口。
通过netstat -ano可以查看端口号
协议
- UDP协议(发短信,飞鸽传书)
TCP协议(建立连接,极域) 三次握手,四次挥手 ack
OSI网络模型(7层)
- 物理层:
主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。- 数据链路层:主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装。常把这一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。
- 网络层:主要将从下层接收到的数据进行IP地址(例192.168.0.1)的封装与解封装。在这一层工作的设备是路由器,常把这一层的数据叫做数据包。
- 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
- 回话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)
- 表示层:主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够能识别的东西(如图片、声音等)。
- 应用层:主要是一些终端的应用,比如说FTP(各种文件下载),WEB(IE浏览),QQ之类的(可以把它理解成我们在电脑屏幕上可以看到的东西.就是终端应用)。
三次握手和两次挥手
三次握手
- 1)首先客户端向服务器端发送一段TCP报文
- 2)服务器端接收到来自客户端的TCP报文之后,结束LISTEN阶段。并返回一段TCP报文
- 3)客户端接收到来自服务器端的确认收到数据的TCP报文之后,明确了从客户端到服务器的数据传输是正常的,结束SYN-SENT阶段。并返回最后一段TCP报文。
(1)男孩喜欢女孩,于是写了一封信告诉女孩:我爱你,请和我交往吧!;写完信之后,男孩焦急地等待,因为不知道信能否顺利传达给女孩。
(2)女孩收到男孩的情书后,心花怒放,原来我们是两情相悦呀!于是给男孩写了一封回信:我收到你的情书了,也明白了你的心意,其实,我也喜欢你!我愿意和你交往!;
写完信之后,女孩也焦急地等待,因为不知道回信能否能顺利传达给男孩。
(3)男孩收到回信之后很开心,因为发出的情书女孩收到了,并且从回信中知道了女孩喜欢自己,并且愿意和自己交往。然后男孩又写了一封信告诉女孩:你的心意和信我都收到了,谢谢你,还有我爱你!
女孩收到男孩的回信之后,也很开心,因为发出的情书男孩收到了。由此男孩女孩双方都知道了彼此的心意,之后就快乐地交流起来了~~
四次挥手
- 1)首先客户端想要释放连接,向服务器端发送一段TCP报文
- 2)服务器端接收到从客户端发出的TCP报文之后,确认了客户端想要释放连接,随后服务器端结束ESTABLISHED阶段,进入CLOSE-WAIT阶段(半关闭状态)并返回一段TCP报文
- 3)服务器端自从发出ACK确认报文之后,经过CLOSED-WAIT阶段,做好了释放服务器端到客户端方向上的连接准备,再次向客户端发出一段TCP报文
- 4)客户端收到从服务器端发出的TCP报文,确认了服务器端已做好释放连接的准备,结束FIN-WAIT-2阶段,进入TIME-WAIT阶段,并向服务器端发送一段报文
举个栗子:把客户端比作男孩,服务器比作女孩。通过他们的分手来说明“四次挥手”过程。
"第一次挥手":日久见人心,男孩发现女孩变成了自己讨厌的样子,忍无可忍,于是决定分手,随即写了一封信告诉女孩。
“第二次挥手”:女孩收到信之后,知道了男孩要和自己分手,怒火中烧,心中暗骂:你算什么东西,当初你可不是这个样子的!于是立马给男孩写了一封回信:分手就分手,给我点时间,我要把你的东西整理好,全部还给你!男孩收到女孩的第一封信之后,明白了女孩知道自己要和她分手。随后等待女孩把自己的东西收拾好。
“第三次挥手”:过了几天,女孩把男孩送的东西都整理好了,于是再次写信给男孩:你的东西我整理好了,快把它们拿走,从此你我恩断义绝!
“第四次挥手”:男孩收到女孩第二封信之后,知道了女孩收拾好东西了,可以正式分手了,于是再次写信告诉女孩:我知道了,这就去拿回来!

浙公网安备 33010602011771号