网络编程:实现连接到网络的计算机之间的网络通信,比如QQ的聊天、传文件。
ip:一台计算机在网络中的唯一标识
查看本机ip:windows是ipconfig,linux是ifconfig
ipv4:4个整数,0-255之间,点号分隔,比如192.168.1.1,约42亿个地址,2011年初已耗尽
ipv6:8组,每组4个16进制数,冒号分隔,比如ABCD:0000:2C4F:0000:0000:EF01:2345:6789
如果一组全是0,可缺省,上面的地址可简写为ABCD**::**2C4F:0000:0000:EF01:2345:6789,但只能缺省一次(只能出现一次::)
也可以简写为ABCD:0000:2C4F**::**EF01:2345:6789,缺省了2组0
本地回路地址:127.0.0.1(ipv4) ::1(ipv6)
广播地址:255.255.255.255
端口号:唯一标识一台机器上的某个程序。ip确定是哪台机器,port确定是这台机器上的哪个程序。
范围:0-65535,尽量使用1024以上的端口号,1024以下的基本都被OS用了。
协议:
- TCP 面向连接(3次握手),可靠传输(需要对方存在、且已启动才能进行通信),因为要保证传输安全,所以传输速度略慢,要区分客户端、服务端。
- UDP 无连接,不可靠传输(直接发送数据,不管对方是否存在、是否已启动监听),速度快,不区分客户端、服务端
三次握手:客户端先向服务器发起请求,服务端响应请求,客户端向服务器传输数据。
套接字(socket):
ip:port的形式,由ip、port组成(唯一标识)。
通信的两端都有socket,网络通信其实就是socket之间的通信,数据在2个socket之间通过IO流传输。
这也是网络通信的原理。