1.1 概述
地球村概念
计算机网络
是指将不同地理位置多台计算机或外部设备,通过通信线路连接,在网络通信协议等作用下,实现资源共享的目的;
网络编程目的
传播信息交流。。。
想要达到这个效果需要什么
- 准确定位网络上的一台主机上的某个资源:IP+端口(微信、QQ)
- 通信方式:TCP(打电话 -- 连接 -- 接了 -- 通话)、UDP(发短信 -- 发送了就完事了 -- 接收)
1.2 网络通信的要素
如何实现网络通信?
通信双方地址
规则:网络通信的协议
http、ftp、smtp、tcp、udp。。。
TCP/IP参考模型
应用层:HTTP、FTP
传输层:TCP、UDP
网络层:IP
数据链路层
1.3 IP
ip地址:InetAddress
-
唯一定位一台网络上计算机
-
127.0.0.1 本机IP(localhost)
-
IP的分类
-
IPv4和IPv6
-
ipv4:4个字节,每个字节0~255 127.0.0.1
-
ipv6:8个整数,128位
2001:1f34:1789:3jgf:sdf4:sdf9:kkk4:sfgb
-
-
公网和私网
- 公共网络 ABCD类
- 192.168.xxx.xxx 指的是特定私有区域内
-
域名:www.baidu.com (方便记忆IP)
-
1.4 端口
端口表示计算机上一个程序的进程;
-
IP是一栋楼,端口就表示每户人家;
-
不同的进程有不同的端口,用来区分软件;
-
被规定0 ~65535
-
TCP、UDP:65535*2 (单个协议下,端口号不能冲突)
-
端口分类
-
公有端口:0~1023
- HTTP:80
- HTTPS:443
- FTP:21
- Telent:23
-
程序注册端口:1024~49151
- Tomcat:8080
- Mysql:3306
- Oracle:1521
-
动态/私有:49152~65535
#查看所有端口 netstat -ano
-
-
端口映射
将消息发送至指定对应端口,该端口程序具有对应接收程序;
本机QQ将消息发送至另一台机器上的QQ,两个QQ的端口都是一样,其他端口是无法接受到QQ的消息(除非内部集成QQ接收程序)
1.5 通信协议
协议:约定,就好比我们现在说的普通话;
网络通信协议:速率、传输码率、代码结构、传输控制。。。
问题:十分复杂
大事化小:分层!
TCP/IP协议族
重要:
- TCP:用户传输协议;
- UDP:用户数据报协议;
出名的协议:
- TCP
- IP:网络互连协议;
TCP和UDP对比
-
TCP:打电话,需要连接,较稳定;
三次握手,四次挥手 三次握手: A:你瞅啥? B:瞅你咋滴? A:干一架。 四次挥手: A:我要走了。 B:你真的要走了吗? B:你真的真的要走了吗? A:我真的要走了。 -
UDP:发短信,不需要连接,较方便;
DDOS洪流攻击;
客户端、服务端没有明确界限;
1.6 TCP
客户端
- 连接服务器 Socket
- 发送消息
服务端
- 建立服务器的端口ServerScoket
- 等待用户的链接 accept
- 接收用的消息