19_网络编程

19_网络编程

网络概述

计算机网络:

计算机网络是指将 地理位置不同 的具有独立功能的 多台计算机 及其外部设备,通过通信线路连接起来 ,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

每一台连接到网络中设备,被称之为 “节点”。

分类

按照网络覆盖范围进行分类:

  • 局域网 :覆盖范围相对较小,常见有:家庭局域网、学校局域网、公司局域网…
    • 速度、安全…
  • 城域网
  • 广域网(互联网)

按照是否有线进行分类:

  • 无线网
  • 有线网

IP

IP:Internet Protocol,在计算机连接到网络之后,会随机分配一个唯一的 “身份证”/“地址”。有了 IP,两台计算机可以通过网络进行通信,一般情况下,IP 都是动态的,还有一些情况下,IP 是静态的(公网 IP)。

IP 地址版本:

  • IPv4:由 4 个 8 位的二进制数来表示,如:00001010.00000000.00000000.00000001 ,由于二进制形式表示的 IP 地址非常不便记忆和处理,因此通常会将 IP 地址写成十进制的形式。

    11111111.11111111.11111111.11111111

    255.255.255.255

    单个位的范围是:0 ~ 255

  • IPv6

    IPv6 使用 16 个字节表示 IP 地址,它所拥有的地址容量约是 IPv4 的 8 X 1028 倍。

     fe80::3c11:8aa3:9b18:d01a%2
    

查看本机 ip 命令:

  • Windows系统:在命令行中,输入 ipconfig

测试本机和其他计算机的联通命令:

  • ping命令,在命令行中,输入 ping IP地址/域名

    正在 Ping www.a.shifen.com [110.242.68.4] 具有 32 字节的数据:
    来自 110.242.68.4 的回复: 字节=32 时间=11ms TTL=52
    来自 110.242.68.4 的回复: 字节=32 时间=15ms TTL=52
    来自 110.242.68.4 的回复: 字节=32 时间=12ms TTL=52
    来自 110.242.68.4 的回复: 字节=32 时间=13ms TTL=52
    
    110.242.68.4Ping 统计信息:
        数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):
        最短 = 11ms,最长 = 15ms,平均 = 12ms
    

在同一个网络不允许出现两个相同的 “身份证”,如果真的出现了,其中一个必然无法加入到网络。

域名

因为 IP 地址,记忆也比较繁琐,所以一般为了方便记忆一些程序所在计算机的地址,都是会将 IP 和 域名绑定,这样我们通过访问域名就可以获得对方的 IP。

通过 DNS 来解析域名(由网络运营商提供)。

目前,咱们国内,IP 和 域名绑定后,还需要进行备案,否则后续运营商不会给你解析域名。

www.baidu.com

端口

每个程序在计算机中运行时,都需要占用一个端口。

端口号的取值范围是 0~65535,其中, 0~1023 之间的端口号用于一些知名的网络服务和应用,用户的普通应用程序需要使用 1024 以上的端口号,从而避免端口号被另外一个应用或服务所占用。

常用的端口:

  • HTTP协议默认端口:80
  • HTTPS协议默认端口:443
  • SSH协议默认端口:22
  • MySQL数据库默认端口:3306
  • Tomcat服务器默认端口:8080
  • Nginx服务器默认端口:80

经常出现 “端口占用” 错误。

在浏览器中,输入了一个域名,然后回车之后,到显示页面,发生了什么?

  1. 你输入了 www.baidu.com ,浏览器会将这个地址补完整:https://www.baidu.com:443
  2. 浏览器根据域名来查找 IP 地址
    • 浏览器缓存
    • 系统缓存
    • 路由器缓存
    • 本地 DNS 设置:hosts文件
    • 网络运营商提供的 DNS 服务器
  3. 浏览器结合 IP 地址和端口定位到指定机器的指定程序
  4. 程序处理完请求后,会将结果响应回来
  5. 浏览器接收响应结果,处理并展示

C/S架构和B/S架构

C/S:Client,客户端 / Server,服务器

  • QQ、迅雷、抖音 …
  • 需要下载安装才能使用,如果更新还需要重新下载(优化方式:省流更新技术)
  • 有效减轻服务器的压力(胖客户端),带来更好的用户体验,受到网络影响较小
  • 客户端对于计算机要求较高,画面渲染比较强
  • 安全性较高

B/S:Browser,浏览器(客户端) / Server,服务器(1990年左右,诞生)

  • 京东、百度、各种小程序 …
  • 不需要下载安装,只需要一个浏览器即可使用,如果更新刷新一下即可
  • 服务器压力较大(瘦客户端),受到网络影响较大(优化方式:异步请求技术等)
  • 客户端对于计算机要求较低,画面渲染比较差
  • 安全性较差

Socket概述

socket技术(套接字编程),底层机制复杂,所以 Java 在 java.net 包下提供了一套 API,用于简化 Socket 编程。

  • Socket
  • ServerSocket
  • DatagramPacket
  • DatagramSocket
  • InetAddress

传输协议

为了在网络中不同的计算机之间进行通信而建立的规则,标准或约定的集合。

  • TCP协议(Transmission Control Protocol,传输控制协议)

    • 面向连接的、可靠的 、基于字节流的传输通信协议

    • 文件传输、聊天 …

    • 三次握手建立连接、四次挥手断开连接

请添加图片描述

请添加图片描述

  • UDP协议(User Datagram Protocol,用户数据报协议)

    • 无连接的 协议,不可靠 ,在传输数据之前,客户端和服务器并不建立和维护连接
    • 视频聊天、远程会议 …

基于TCP协议开发网络程序

Socket:用于开发客户端程序

构造方法:

  • Socket(String host, int port) 指定服务端程序的主机地址(IP)和端口来构建 Socket 程序

常用方法:

  • getOutputStream() : OutputStream 获取输出流,输出数据

  • getInputStream() : InputStream 获取输入流,读取数据

  • getInetAddress() : InetAddress 获取连接的 IP 地址

  • close() : void 关闭资源

ServerSocket:用于开发服务端程序

构造方法:

  • ServerSocket(int port) 指定服务端程序的端口

常用方法:

  • accept() : Socket 监听客户端请求,将客户端请求封装到 Socket 对象中
  • close() : void 关闭资源

基于UDP协议开发网络程序

DatagramPacket:封装数据

构造方法:

  • DatagramPacket(byte[] buf, int length, InetAddress address, int port)
    • p1:字节数据数组
    • p2:字节数据长度
    • p3:接收方IP地址
    • p4:接收方端口
  • DatagramPacket(byte buf[], int length) 接收方数据包

常用方法:

  • getData() : byte[] 获取封装的数据
  • getLength() : int 获取封装数据的长度

DatagramSocket:传输数据

构造方法:

  • DatagramSocket(int port) 指定运行端口
  • DatagramSocket() 发送方可用

常用方法:

  • send(DatagramPacket p) : void 发送封装好的数据包
  • receive(DatagramPacket p) : void 接收数据到数据包
  • close() : void 关闭资源

InetAddress:

构造方法:

  • DatagramSocket(int port) 指定运行端口
  • DatagramSocket() 发送方可用

常用方法:

  • send(DatagramPacket p) : void 发送封装好的数据包
  • receive(DatagramPacket p) : void 接收数据到数据包
  • close() : void 关闭资源

InetAddress:

  • getByName(String host) : InetAddress 根据主机地址获取 InetAddress 对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值