socket UDP、TCP发送接收数据
基础计算机网络概念
两台电脑的通信
- 两台电脑之间的通信类似于写信,数据通过网线传输到服务器,在经过服务器传输给目标电脑,其中ip地址是唯一标识,用来识别你要发送的对象,在写信中ip地址就相当于我们的通信地址。
IP地址与协议
- 规定网络地址的协议称为ip协议,它定义的地址为ip地址,目前广泛采用的v4版本即ipv4,其由32位2进制表示。
- 一个ip地址通常写为四段十进制数
- 范围为从0.0.0.0到255.255.255.255
- 我们可以通过ipconfig命令来查看本机的网卡信息,;Linux的命令为ifconfig
- 上图中通过ipconfig命令可以查看本机的ip地址,有v6和v4两个版本,一般常用的是v4的地址
- ip地址版本
- ipv4
- 广泛在用
- 版本为v4
- 地址位数为32位
- 地址有限,几乎全部耗尽
- ipv6
- 试验阶段,作为下一阶段的IP地址
- 版本为v6
- 地址位数为128位
- 因为增加了地址位数,所以拥有很多种排列组合,号称可以为全世界的每一粒沙子编上一个地址
- ipv4
公网IP和内网IP
- 公网IP:即互联网IP,是ipv4协议分配的有效的ip地址。
- 内网IP:即局域网IP,是在一个局域网里随机分配得到的ip地址。
- 之所以出现公网IP和内网IP是因为,ipv4的地址是有限的,而为了应对地址的不足,开发出了内网IP,将一个公司、学校或者家庭看作是一个局域网,当其内部需要上网时,给每个设备都分配一个ipv4地址显然是不现实的,因此目前的做法是将公司的公网IP看作一个网关,由网关给局域网内部的设备随机分配虚拟IP地址,这些虚拟ip地址用来识别具体是哪个设备,并通过NAT转换实现内网访问外网的能力。
- 内网的主要作用
- 共享传输信道:简单地理解就是不需要每台电脑一个外网IP地址。
- 传输速率高:内网之间的电脑因为没有外网网络拓扑的复杂性,所以互相通信的网络可以很快。
- 误码率低:因为通信距离很近,所以误码率很低,换句话说就是网络很稳定。
NAT技术
- 上面介绍了公网IP和内网IP,我们可以知道内网IP其实是一个随机分配的地址,也就是说它其实是不存在的,不被认可的,那么如何实现内网访问外网的功能呢,将由NAT技术来实现。
- 简单地说,NAT就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,就在网关(可以理解为出口,打个比方就像院子的门一样)处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接,这一功能很好地解决了公共 IP地址紧缺的问题。
- 比如一个公司的IP地址为192.168.1.1,这是它的网关,其内部有三台电脑,内网分配的ip地址分别为192.168.1.2,192.168.1.3,192.168.1.4,当其中一台电脑要访问外网时,NAT技术将电脑的ip地址加端口映射成网关的IP地址加端口,即通过网关去访问外网,既解决了ip地址紧缺的问题,又保证了用户的使用。
端口介绍
- 当我们使用网络进行通信时,除了知道对方的ip地址之外,我们还需要知道用什么软件进行通信,那么如何识别我们通过哪种软件进行通信呢,这就是端口的作用。
- 通常每个应用程序都会占用一个端口,同一时间只会有一个程序占用一个端口,这样就是的端口具有唯一性,是的我们的电脑可以通过端口来识别具体是哪个应用程序在进行通信。
- 我们这里举一个简单的例子,当我们取银行取钱时,我们可以把银行想象成一个主机,当我们进门之后,会有服务人员问我们要办什么业务,然后会告诉我们取钱去三号窗口,这样我们就不会走错,而窗口就相当于网络里的端口。
- 端口分为知名端口和动态端口
- 知名端口的范围是0-1023,这些端口通常是固定的分配给一些公认的服务,例如80端口分配给http服务,21端口分配给FTP服务。
- 动态端口的范围是1024-65535,这类端口,不会固定的分配,是留给计算机用来临时动态的分配的,也是我们的应用程序通常会临时占用的端口。
- 我们可以