1 互联网本质
互联网(英语:Internet)是指20世纪末期兴起电脑网络与电脑网络之间所串连成的庞大网络系统。这些网络以一些标准的网络协议相连。它是由从地方到全球范围内几百万个私人、学术界、企业和政府的网络所构成,通過电子,无线和光纤网络技术等等一系列广泛的技术联系在一起。互联网承载范围广泛的信息资源和服务,例如相互关系的超文本文件,还有万维网(WWW)的应用,电子邮件,通话,以及文件共享服务。
1.1 局域网
-
介绍
又称内网,小范围内的私有网络,一个家庭内的网络、一个公司内的网络、一个校园内的网络都属于局域网
-
特点
1、传输介质:早期的局域网多使用同轴电缆,后来发展为更加普遍的双绞线和光纤。
2、网络拓扑:常见的网络拓扑有星形、环形和总线形等。
3、网络协议:局域网中常用的网络协议有以太网、无线局域网(Wi-Fi)等。
4、传输速度:局域网的传输速度较快,从最初的10Mbps发展到如今的千兆甚至万兆以太网。
5、安全管理:局域网通常具有较强的安全性,可以通过物理隔离、网络隔离及数据加密等多种方式确保数据安全。 -
代表设备
1、路由器
2、交换机
3、集线器
4、网络桥接器
1.2 广域网
-
介绍
又称外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。
2 tcp/ip协议
TCP/IP(传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
2.1 三次握手
在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接
- 第一次握手:客户端尝试连接服务器,向服务器发送 syn 包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入 SYN_SEND 状态等待服务器确认
- 第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个 SYN包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态
- 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
2.2 四次挥手
建立TCP连接需要三次握手,终止TCP连接需要四次挥手
-
第一次挥手 客户端发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态
-
第二次挥手 服务器端接收到连接释放报文后,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT 关闭等待状态
-
第三次挥手 客户端接收到服务器端的确认请求后,客户端就会进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文,服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
-
第四次挥手 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态,但此时TCP连接还未终止,必须要经过2MSL后(最长报文寿命),当客户端撤销相应的TCB后,客户端才会进入CLOSED关闭状态,服务器端接收到确认报文后,会立即进入CLOSED关闭状态,到这里TCP连接就断开了,四次挥手完成
2.3 ip地址
-
简介
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。 -
用途
在单个局域网网段中,计算机与计算机之间可以使用网络访问层提供的 MAC 地址进行通信。如果在路由式网络中,计算机之间进行通信就不能利用 MAC 地址实现数据传输了:因为 MAC 地址不能跨路由接口运行;即使强行实现跨越,使用 MAC 地址传输数据也是非常麻烦的。
这是由于内置在网卡里的固定 MAC 地址不能在地址空间上引入逻辑结构,使其无法具备真正的地址来表示国家、省、市、区、街道、路、号这类层次。因此,要进行数据传输,必须使用一种逻辑化、层次化的寻址方案对网络进行组织,这就是 IP 地址。
-
表示
IP地址是长度是32 bit,由4个字节组成。为了阅读和书写方便,IP地址通常采用点分十进制数来表示。
ip地址范围是00000000.00000000.00000000.0000000011111111.11111111.11111111.11111111,即0.0.0.0255.255.255.255。
3 端口与端口号
在我们的日常开发过程中, 特别是后端的开发人员, 即便他没有真正理解端口的细节, 他还是会听过见过各类的端口, 这个东西几乎无处不在, 比如:
- mysql 缺省用的 3306 端口,
- redis 的 6379 端口,
- https默认用的 443端口,
- http默认用的80端口,
- ssh 用的 22 端口,
- 等等…
3.1 端口及特点
-
端口
端口的作用就是给运行的应用程序提供传输数据的通道。
-
端口号
操作系统为了统一管理这么多端口,就对端口进行了编号,这就是端口号,端口号其实就是一个数字,好比我们现实生活中的门牌号。
-
应用程序进行数据通信的流程
- 首先通过IP地址找到对应的设备
- 然后通过端口号找到对应的端口
- 然后通过端口把数据传输给应用程序
3.2 端口号范围
-
Well-Known Ports(即公认端口号)
它是一些众人皆知著名的端口号,这些端口号固定分配给一些服务,我们上面提到的 HTTP 服务、 FTP服务等都属于这一类。知名端口号的范围是:0-1023
-
Registered Ports(即注册端口)
它是不可以动态调整的端口段,这些端口没有明确定义服务哪些特定的对象。不同的程序可以根据自己的需要自己定义,注册端口号的范围是:1024-49151
-
Dynamic, private or ephemeral ports(即动态、私有或临时端口号)
顾名思义,这些端口号是不可以注册的,这一段的端口被用作一些私人的或者定制化的服务,当然也可以用来做动态端口服务,这一段的范围是:49152–65535
4 tcp与udp
4.1 udp介绍
udp是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或和目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
-
特点
- 无需建立链接,数据到达后也无需确认
- 不可靠交付
-
适用场景
- 通常用于可靠性较高的网络环境(局域网)或不要求可靠传输的场合
- 也常用于客户机/服务器模式中。
-
举例
- 网络游戏
- 直播
- 音视频传输
4.2 tcp介绍
tcp是一种面向连接的、可靠的、基于字节流的通讯协议。
-
特点
- 面向连接,提供了可靠的建立连接和拆除连接的方法
- 可靠交付
-
适用场景
- TCP常用于不可靠的互联网中为应用程序提供面向连接的,可靠的,端到端字节流服务。
-
举例
- 远程控制
- 邮件
- 点对点文件传输
5 socket介绍
- Socket(简称套接字)是进程间通信的一种方式。
- 它能实现不同主机间的进程通信,我们网络上各种各样的服务大多是基于Socket来完成通信的。
- 例如我们每天浏览网页、QQ聊天、收发email等等。
5.1 创建socket
python中使用socket模块的函数socket就可以完成。
该函数带有两个参数:
- adderss family:可以选择AF_INET(用于internet进程间通信)或者AF_UNIX(用于同一台机器进程间通信)
- Type:套接字类型,可以是SOCK_STREAM(流式套接字,主要用于TCP协议)或者SOCK_DGRAM(数据报套接字,主要用于UDP协议)
import sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
import sockets = socket.socket(socket.AF_INET, socket.SOCK_STREAM)