网络编程
计算机网络:
网络编程的目的:
想要达到这个效果需要什么:
- 如何准确定位网络上的一台主机,192.168.16.124:端口,定位到这个计算机上的某个资源
- 找到这个主机,如何传输数据呢
javaweb:网页编程 b/s 架构,所有东西通过浏览器去访问
网络编程:tcp/ip c/s架构,客户端
##网络通信段要素
人工智能:智能汽车:工厂,人少!?
伦理问题:火车一边是5个小孩,一边是一个小孩
如何实现网络的通信
通信双方的地址
-
ip
-
端口号
规则:网络通信段协议
tcp/ip参考模型
osi七层模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y01p2FvV-1678092948109)(D:\桌面\java全栈冲冲冲\网络编程\1.assets\image-20221204222620754.png)
这里是引用
实际应用的是tcp/ip四层概念模型
小节
-
网络编程中有两个主要的问题
- 如何准确的定位到网络上的一台或者多台主机
- 找到主机之后如何进行通信
-
网络编程中的要素
-
ip和端口号
-
网络通信写协议 udp ,tcp
-
-
万物皆对象
ip
ip 地址:inetAddress
-
唯一定位一台网络上计算机
-
127.0.0.1 本机localhost
-
ip地址的分类
-
ipv4/ipv6
ipv4 127.0.0.1 4个字节组成。0-255 42亿个,30亿都在北美,亚洲4亿,2011年用完
ipv6 128位 8个无符号整数
-
公网-私网
-
192.168.xxx专门给组织内部使用
-
ip地址的分类
-
域名:记忆ip问题
端口
端口表示计算机上的一个程序的进程
-
不同的进程有不同的端口号,用来区分软件
-
被规定0-65535
-
tcp,udp:65535*2 单个协议下,端口号不能冲突
-
端口分类0-1023
-
公有端口0-1023
-
http:80
-
https: 443
-
ftp: 21
-
telent: 23
-
-
-
程序注册端口:1024-49141 ,分配用户或者程序
-
tomcat:8080
-
mysql:3306
-
oracle:1521
-
-
动态,私有:49152-65535
netstat -ano #查看所有的端口 netstat -ano|findstr "5900"#查看指定的端口 tasklist|findstr "8696" #查看指定端口的进程
通信协议
协议:约定
网络通信协议:速率,传输码率,代码结构。传输控制
问题:非常复杂
大事化小:分层
重要:
-
tcp:用户传输协议
-
udp:用户数据报协议
出名的协议
-
tcp
-
ip网络互连协议
-
tcp udpd对比
tcp打电话,连接温度
三次握手,四处挥手
最少需要三次,保证稳定连接
a:你瞅啥?
b:瞅你咋滴?
c:干一场!
a:我要走了
b:你要走了吗
b:那你走吧
a:走就走
客户端,服务端
传输完成,释放连接,效率低
udp发短信,不连接
不连接,不稳定
客户端,服务端,没有明确的界限
不管有没有准备好,都可以发给你
ddos:洪水攻击!一直发垃圾信息,虽然它不接受,但 是会占用你端口(饱和攻击)
tcp
客户端
-
连接服务器socket
-
发送消息
服务器
-
建立服务的端口serverSocket
-
等待用户的连接accept
-
接收用的消息
udp
发短信:不用连接,需要知道对方的地址
URL
统一资源定位符:定位资源的,定位互联网上的某一个资源
dns域名解析
协议://ip地址:端口/项目名/z
p
客户端
-
连接服务器socket
-
发送消息
服务器
-
建立服务的端口serverSocket
-
等待用户的连接accept
-
接收用的消息
udp
发短信:不用连接,需要知道对方的地址
URL
统一资源定位符:定位资源的,定位互联网上的某一个资源
dns域名解析
协议://ip地址:端口/项目名/z