IP地址
- 标识网络中唯一一个设备的地址,然后就可以进行数据通信了
- 地址可以有IPv4和IPv6类型的
- IPv4是点分十进制的,例如192.168.199.161
- IPv6是冒号16进制
在linux中使用ifconfig来查看网卡信息,就能查看IP地址
域名
- 就是IP地址的别名,通过域名能解析出来一个对应的IP地址
- 就好像本机的域名是localhost,能解析出来127.0.0.1一样
Socket中Send核Recv原理
- 当创建一个TCP socket对象时,会有一个发送缓冲区和接受缓冲区产生
- 其实就是内存中的一块空间
Send
- 若要发数据,必须通过网卡,应用程序无法直接通过网卡来发送数据,所以需要OS来调用接口
- 程序首先把数据写入发送缓冲区,然后由OS控制网卡,把发送缓冲区的数据发送给服务器网卡
Recv
- OS调用接口
- OS把收到的数据先放到接收缓冲区,然后应用程序再从接收缓冲区获取数据
不管是发送还是接收,都是OS控制网卡实现的
端口和端口号
- 每运行一个网络程序都有一个端口,一个设备可能运行着一堆程序,为了保证能发送到正确的程序,就使用端口号
- 端口号就是个数字嘛
- 一共有65536个端口
端口的分类
- 知名端口号:大家都知道的,从0-1023
- 动态端口号:开发应用程序可以使用的端口号 从1024-65535选
- 如果没设置,系统自动给你分配
- 运行的程序退出的时候,占用的端口号会被释放
TCP协议的介绍
- 网络应用程序之间的通信流程
- 在发送数据之前需要选择一个对应的传输协议,保证程序之间按照指定的规则进行数据通信
- TCP概念
- TCP:传输控制协议
- 面向连接的、可靠的、基于字节流的传输层通信协议
- TCP通信步骤:
- 创建连接
- 传输数据
- 关闭连接
就跟打电话一样,先拨电话,在对方没接之前都没建立连接,一旦接了,就建立了连接
- 特点
- 面向连接
- 可靠传输
- TCP采用应答机制(一问一答,收到数据的时候会发一个回去说明收到)
- 超时重传(发送一段时间,另一方没有回复收到,超过一段时间就会再发)
- 错误校验(比如编号顺序错了,就能说明错了)
- 流量控制和阻塞管理(如果对方没有来得及接受,就先写在网卡缓冲区里,这个缓冲区有上限,如果满了就不能发了)
Socket介绍
- Socket是进程之间通信的一个工具,就跟插座一样,家用电器想工作需要插座通电,进程想网络通信需要通过套接字
- 是数据的搬运工,基本现在都需要socket
TCP网络应用程序的开发流程
- TCP客户端开发
- 运行在用户设备上的程序
- TCP服务端开发
- 运行在服务器上的程序,给客户端提供服务