网络编程
协议:
-
TCP:可以比喻为打电话,必须连接上在通话。
-
UDP:可以比喻为打短信,发送过去不管能不能接收到。
计算机网络:是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件以及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
javaweb:网页编程 B/S
网络编程:TCP/IP C/S
网络通信的要素:
如何实现网络通信?
-
通信双方的地址:
- ip
- port 端口号
-
规则:网络通信协议
OSI参考模型
OSI(Open System Interconnect)开放系统互联参考模型,是ISO(国际标准组织)颁布的一个开放式体系结构 ,把网络分为七层。
分层 | 功能 |
---|---|
应用层 | 网络服务与最终用户的一个接口 |
表示层 | 数据格式转换编码,数据压缩和解压,数据加密和解密等 |
会话层 | 允许不同主机上的用户之间,建立、管理、终止会话 |
传输层 | 把上层数据分割成数据段,定义协议端口号,实现不同主机用户进程间的数据通信 |
网络层 | 把上层数据封装成数据包,进行逻辑地址寻址,实现不同网络间的路径选择 |
数据链路层 | 把上次数据封装成固定格式的帧,进行硬件地址寻址,差错校验等 |
物理层 | 物理连接,完成相邻节点之间的原始比特流的传输 |
OSI七层网络模型 | TCP/IP四层概念模型 | 对应网络协议 | 典型硬件设备 |
---|---|---|---|
应用层(application) | 应用层 | HTTP,TFTP,FTP,NFS,WAIS,SMTP | 计算机 |
表示层(presentation) | 应用层 | Telnet,SNMP,Gopher | 计算机 |
会话层(session) | 应用层 | SMTP,DNS | 计算机 |
传输层(transport) | 传输层 | TCP,UDP | 防火墙 |
网络层(network) | 网络层 | IP,ICMP,UUCP, RARP | 路由器 |
数据链路层(data link) | 数据链路层 | FDDI,Ethernet | 交换机 |
物理层(physical) | 数据链路层 | IEEE 802.1A | 网卡 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hurDg3MD-1630657242177)(C:\Users\hzhb\AppData\Local\Temp\1628065792570.png)]
小结:
- 网络编程中有两个主要问题:
- 如何准确的定位到网络上的一台或者多台主机。
- 找到主机之后如何进行通信
- 网络编程中的要素
- IP和端口号
- 网络通信协议:TCP、UDP
- Java中万物皆对象
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个无符号的整数
fe80::79d4:ab37:92d7:797c%13
-
公网(互联网)-私网(局域网)
- ABCD类地址
- 192.168.xx.xx专门给组织内部使用的
-
端口
端口表示计算机上的一个程序的进程:
-
不同的进程有不同的端口号。用来区分软件。
-
被规定0~65535
-
TCP:65535个 UDP:65535个 tcp:80和udp“80不冲突,单个协议下不能冲突
-
端口分类
-
公有端口:0~1024
- HTTP:80
- HTTPS:443
- FTP:21
- Telnet:23
-
程序注册端口:1024~49151,分配用户或者程序
- Tomcat:8080
- Mysql:3306
- Oracle:1521
-
动态、私有:49152~65535
netstat -ano #查看所有的端口 netstat -ano|findstr “5900” #查看指定端口 tasklist|findstr “8696” #查看指定端口的进程
通信协议
-
协议:就是约定,为了计算机之间进行信息交换而约定的格式。
网络协议:速率,传输码率,代码结构
tcp/ip协议族:
- TCP: 传输控制协议 :数据可靠传输
- UDP:用户数据报协议 :不提供可靠性、流控或差错恢复功能
- IP:网际互连协议
TCP和UDP对比:
TCP:
-
连接,稳定
-
三次握手,四次挥手
-
客户端,服务端
-
传输完成,释放连接,效率低
UDP:
- 不连接,不稳定
- 客户端、服务端:没有明确的界限
- 不管有没有准备好,直接发送数据
- DDOS:饱和攻击