Java——网络编程三要素

 * A:计算机网络
 *  是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
 * 其实我们这些网,之所以能够连接,是因为在美国、日本、中国......很多国家,海底都有光缆,这个海底光缆都是连通的;如果由于海啸或者地震导致海底光缆断开,那么,全世界的网就会受到影响
 * 而我们手机上网使用的3G、4G,这些网络都是由于信号塔的作用,需要搭建信号塔,这些信号塔是通过卫星发射信号的,所以你就可以去接收这些3G、4G信号
 * 现在联通在3G这块很牛掰,但是移动在4G这块快把联通给快干败了
 * 
 * B:网络编程
 *  就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。
 * 我电脑上的东西想要传给你,只要有网就,可以传给你,无论是局域网还是互联网都是可以相互传递的,这就是网络编程
 * 网络编程三要素之 IP
 * 通过IP找对应的设备地址
 * IPv4:有4个段位,每个段位都在0·255之间
 * 每个设备在网络中都有唯一的一个标识
 * 每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址
 * 在DOS模拟器下的几个命令:
 *      ipconfig:查看本机IP
 *      ping:测试连接(测试你有没有跟外网连接上,或者测试局域网有没有通,我的电脑跟你的电脑有没有连接上(需要拿到对方的IP地址即可))
 *      本地回路地址:127.0.0.1
 *      广播地址:255.255.255.255
 * 
 * 一面向社会出来的时候直接就是IPv4,至于有没有IPv1,IPv2,IPv3小编就不知道了~~
 * IPv4:由4个字节组成,40~255,大概是43亿,其中30亿都在北美,亚洲有4亿,2011年初已经用尽
 * 43亿:一个0~255代表2564294967296=256*256*256*256
 * 30亿在北美,因为IP地址就是人家老外研究出来的,所以30亿在北美
 * 亚洲有4亿,4亿对于亚洲来说太少了
 * 2011年初IPv4已经用尽了,所以正在向IPv6转
 * IPv6:8组,每组是416进制数
 * 例如:                              1a2b:0000:aaaa:000000000000:aabb:1f2f
 * 若是0000,也可以省略,用:代替        1a2b::aaaa:000000000000:aabb:1f2f         一查只有7位,所以可以得知两个::之间省略一个0000
 *                                    1a2b:0000:aaaa::aabb:1f2f                     一查只有5位,所以可以得知两个::之间省略三个0000
 * 可以省略前面的0000或者是后面的0000,但不能前后都省略掉
 * 
 * 
 * 但是在转型的过程中,即由IPv4转型为IPv6这是个漫长的过程;跟当年的WindowsXP系统要转型成Win7、Win10系统一样,都是个漫长的过程
 * 在企业里面,有一些硬件它是比较老旧的,如果你装的是一个低版本的系统,那它(低版本的系统)会支持你去运行,
 * 如果你装的是一个高版本的系统,那么可能那个硬件就支持不了了,这样,就意味着你要去做一系列的跟换,这是有成本的,
 * 所以企业在做这样的更换的时候,会逐渐一点点的进行,所以说会是一个漫长的过程
 * 网络编程三要素之 端口号
 * 通过端口找具体的那个程序
 * 两台设备通过互相识别IP进行连接,然后再通过端口号进行数据交换;例如:两台电脑上都有QQ、微信、feiQ等聊天工具,一台电脑上,从QQ上说句话,另一台电脑接收的是QQ,而不是微信、feiQ接到
 * 原因是:首先找的的是IP地址,通过IP地址找到那台电脑,然后再找端口号,(端口号,就相当于具体的教室,例如去一个地方学习,首先得找的具体的办公楼,然后在去找具体的教室,这个具体的教室,就相当于是端口号,办公楼就相当于是IP地址)
 * 
 * 每个程序在设备上都有唯一的标识
 * 每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序
 * 端口号范围从0~65535
 * 编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。(也并不是都被系统占用了,只是说有几率被系统给占用)
 * 常用端口:
 *      MySQL:3306
 *      Oracle:1521
 *      web:80
 *      Tomcat:8080
 *      QQ:4000
 *      feiQ:2425
 * 网络编程三要素之 协议
 * 协议:为计算机网络中,进行数据交换而建立的规则,标准或约定的集合
 * 协议有UDP和TCP协议
 * UDP:
 *          面向无连接、数据不安全、速度快、不区分客户端与服务端
 * TCP:
 *          面向连接(三次握手)、数据安全、速度略慢、分为客户端与服务端
 *          三次握手:客户端先向服务端发起请求、服务端响应请求、传输数据
 * UDP可以比作为发短信:我再给你发短信你可以不开机,这个号码也可以不存在,就是在这个世界上没有这种号码,随便给你个号码发条短信,这也是可以发送出去的
 * 它面向无连接,不用担心对方在还是不在;数据不安全,这有可能是数据发丢了;速度快,因为我不用管你在不在;不区分客户端与服务端,我可以给你发,你也可以给我发
 * 
 * TCP的三次握手,相当于手机打电话,首先我给你拨号码,你是必须要在的,这就是所谓的面向连接,你要是关机或者是没有这个号码,我就打不过去,所以,你必须要在的
 * 然后,我给你拨电话,数据是安全的但是速度是略慢的,因为我必须保证你在,我才能拨的过去;分为顾客端和服务端,一面是顾客端一面是服务器
 * 比如说,你去浏览一个论坛,当你去浏览论坛的时候,是先做了一次请求,那么服务器那边接收了之后,它给你来个响应,然后,你就可以和这边交换数据了
 * 第一次是客户端向服务器发出请求;第二次是服务器响应客户端;第三次就是传输数据;这就是三次握手
 * 相对于是安全的,假如说我这边服务器关掉了,你开始请求,没请求到,那就访问不了,所以说,它是面向连接,数据安全的
 * HTTP协议,底层用的就是TCP协议,也是要遵循三次握手
 * 三次握手也可以比作:第一次,你愁啥?第二次,我瞅你咋地?第三次,来,咱来唠唠。
 * 也可以说比作:第一次,约吗?第二次,约。第三次,然后就去了

猜你喜欢

转载自blog.csdn.net/qq_41264055/article/details/81302901