TCP/IP、HTTP(S)、MQTT、AMQP、FTP、网关、子网掩码

网络层(IP)和传输层(TCP、UDP、SSH)负责数据在网络中的传输
应用层(HTTP、FTP、SSH、MQTT、AMQP、RTSP)负责数据的封装和解析
上述应用层协议都建立在TCP/IP之上

TCP/IP协议

传输控制/网络协议,也叫作网络通讯协议。不仅仅包括TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇

IP(Internet Protocol)
  • 网络层。为主机提供一种无连接、不可靠的、尽力而为的数据报传输服务。
TCP(Transmission Control Protocol)
  • 建立在IP协议之上的传输层协议,定义数据传输和连接的方式
  • 在两台计算机之间经过"三次握手"建立可靠连接,握手成功后才开始传输数据。TCP协议会对每个IP包编号,确保对方按顺序收到,如果包丢掉了,就自动重发。理论上TCP连接一旦建立,在通信双方中的任何一方主动发起并通过"四次挥手"关闭连接之前,TCP 连接都将被一直保持下去。
  • WebSocket是建立在TCP协议上的,用于代替轮询。通过保持连接状态以减少开销,且加快响应速度
UDP(User Data Protocol,用户数据协议)
  • 传输层协议,消耗资源比TCP少,传输数据之前源端和终端不建立连接, 需要传送时就直接发出,源端不需要接收来自终端的消息
  • 不保证终端可收到包
  • 不保证终端收到包的顺序
Socket(套接字)

为了方便程序员调用TCP/IP协议(包括TCP和UDP),而抽象出来一组接口。
Socket 和 WebSocket无关。


HTTP

HTTP(Hypertext Transfer Protocol 超文本传输协议)是应用层协议,定义传输数据的内容的规范基于TCP/IP协议
HTTP协议由请求和响应构成,且是无状态的( 无状态是指两次连接通信之间是没有任何关系的,每次都是一个新的连接,服务端不会记录前后的请求信息。)

URL构成

http://www.baidu.com/index.html?id=10
http 协议 protocol
www.baidu.com 主机 host
index.html 路径 path
id=10 参数 query string

常见请求头

  • If-Modified-Since 值为上一次服务器返回的last-modified值,用于确定资源是否更改过,若未更改则从缓存中读取(304)
  • User-Agent 操作系统(OS)和浏览器的版本信息
  • Referfer 发起请求的地址
  • Authorization 一般用于设置身份请求信息

常见响应头

  • last-modified 资源上次修改时间
  • Date 服务器日期
  • Server 服务器信息
  • Transfer-Encoding: 一般为chunked,出现在Content-Length不确定的情况下,表示服务器不知道响应体的具体大小

状态码

成功的状态码:
  • 200 – 服务器成功返回网页
  • 304 – 页面未修改
失败的状态码:
  • 404 – 请求的网页不存在
  • 500 – 服务器内部错误
  • 503 – 服务器暂时不可用
  • 400(错误请求) 服务器不理解请求的语法。
  • 401(未授权) 请求要求进行身份验证。登录后,服务器可能会返回对页面的此响应。
  • 403(已禁止) 服务器拒绝请求。
  • 408(请求超时) 服务器等候请求时超时。
其他:
  • 100(Continue继续) 请求者应当继续提出请求。服务器返回此代码则意味着,服务器已收到了请求的第一部分,现正在等待接收其余部分。

HTTPS

在 应用层HTTP 和 传输层TCP 之间,加入了一个安全层SSL/TLS,用于对发出的HTTP数据加密,对收到的HTTP数据解密

  • SSL全称“Secure Sockets Layer”,安全套接层。
    后来更名为TLS,“Transport Layer Security”,传输层安全协议。
  • 默认端口为443
  • 通过证书(公私钥对)进行加密和解密操作
    证书由CA(Certificate Authority,证书授权中心)颁发。
原理演化
  • 对称加密(单钥匙锁)
    AB端均持有密钥a,在一端用密钥a加密消息,在另一端通过密钥a解密。
    不安全,产生密钥的一方需要将密钥传给对方,可能会被中间人拦截
  • 非对称加密(双钥匙锁)
    A端持有公钥a,B端持有私钥b,公钥的加密只能由私钥解密,私钥的加密只能由公钥解密。
    不安全,产生密钥的一方需要将公钥传给对方,该过程同样可能会被中间人拦截
  • 对称加密 + 非对称加密
    客户端拥有秘钥A,服务器拥有公钥B和私钥C,首先,客户端向服务器发送请求,服务器响应请求并返回公钥B,客户端用公钥B加密秘钥A传给服务器。然后客户端和服务器的通信就可以通过秘钥A来进行加密解密,这样就保证了数据传输过程中的加密问题。
    不安全,在第一次请求时,中间人可以拦截服务器返回的公钥B,并换成伪造的公钥
  • 对称加密 + 非对称加密 + CA数字证书(HTTPS采用的方式)
    数字证书由可信任的第三方颁发,相当于一个身份证,可以验证服务器的身份。
    数字证书包含了证书持有者信息、公钥信息、CA信息、通过CA私钥加密的以上明文信息的签名。客户端初次请求会从服务器端获取该证书,通过CA的公钥解密签名并和明文比对,以此确保

MQTT(Message Queue Telemetry Transport)

遥测传输协议
基于TCP/IP协议,是一种低开销、低带宽占用的应用层即时通讯协议。
适用于计算能力有限、网络带宽低、信号不稳定的远程设备。
使用发布/订阅模式,提供一对多的消息发布,但不会收到订阅者的反馈。
有三种消息发布的服务质量:

  1. “最多一次”,消息发布完全依赖底层 TCP/IP 网络。分发的消息可能丢失或重复。例如可用于给APP推送消息
  2. “至少一次”,确保消息可以到达,但消息可能会重复。
  3. “只有一次”,确保消息只到达一次。例如,这个等级可用在一个计费系统中,这里如果消息重复或丢失会导致不正确的收费。

AMQP(Advanced Message Queue Protocol)

高级消息队列协议
也是基于TCP/IP的应用层通讯协议。
比起MQTT,适用于网络状况较好,机器性能较强的场景。
RabbitMQ是实现了AMQP的消息中间件(也可以通过插件支持MQTT)。


SSH(Secure Shell)

SSH是建立在应用层和传输层基础上的安全协议
默认端口号22
SSH除了作为安全协议以外,有时还被作为一种应用,对于开启SSH服务的设备或系统,可能在终端通过SSH客户端软件进行连接,如:SecureCRT、ssh secure shell client、PuTTY


FTP(File Transfer Protocol)与 SFTP

  • FTP占用两个端口,通常控制端口为21,数据传输端口为20。
  • FTP在控制连接方面可以通过SSL加密,但数据端口传输数据时不加密。
    SFTP比FTP传输慢,但更安全。
  • 通过在数据端口使用SSH加密,变为SFTP协议,此时控制端口为22(同SSH)。
  • 支持主动和被动两种传输方式。
主动传输

被动传输

为Win10启用FTP

  1. 控制面板--》程序--》启用或关闭windows功能
    Internet information service(信息服务),并选中“FTP服务”、“FTP扩展性”和“IIS管理控制台”前的复选框,点击“确定”


  2. 控制面板--》系统和安全--》管理工具--》Internet Information Services (IIS)管理器
    右击选择添加FTP站点,并选择物理目录,输入本机IP,无SSL证书


  3. 关闭防火墙,或控制面板--》所有控制面板项--》Windows 防火墙--》允许的应用
    添加C:\Windows\System32\svchost.exe,会产生windows服务主进程

此时通过ftp:// ip 或者 ftp:// ip:21即可访问


IP地址

IP 地址是一个网卡在网络世界中的通讯地址,一个网卡在同一时段只能有一个 IP 地址,一台机器可以有多个 IP 地址。

  • IPv4
    实际上是一个32位整数,以字符串表示的IP地址如192.168.0.1实际上是把32位整数按8位分组后的数字表示。

  • IPv6
    实际上是一个128位整数,它是IPv4的升级版,以字符串表示类似于2001:0db8:85a3:0042:1000:8a2e:0370:7334。

  • 固定IP
    固定IP地址是长期固定分配给一台计算机使用的IP地址,一般是特殊的服务器才拥有固定IP地址。

  • 动态IP
    因为IP地址资源非常短缺,通过电话拨号上网或普通宽带上网用户一般不具备固定IP地址,而是由ISP动态分配暂时的一个IP地址。

  • 公网IP
    由Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。
    公网IP是在因特网上可以直接被其他人访问的地址。
    公网IP在全球内是唯一的。

  • 私有IP
    Internet 上的保留地址,内网的多台计算机以 NAT(网络地址转换)协议,通过一个公共的网关转向一个公共的公网IP访问Internet。
    内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。
    私网IP可以重复,但是在一个局域网内不能重复。

IP地址分为三类

在很早的时候就预料到了ipv4可能不足,所以在每一类的ip地址中都预留了一部分地址作为私有ip:

类型 ip范围 私有地址范围
A 1.0.0.0~126.255.255.255 10.0.0.0~10.255.255.255
B 128.0.0.0~191.255.255.255 172.16.0.0~172.31.255.255
C 192.0.0.0~223.255.255.255 192.168.0.0~192.168.255.255

其中还有 127.x.x.x 段地址空间是被保留的回环地址

具体的上网流程
比如在一个小区内的电信用户的公网ip都是相同的,所以我们将数据发送给路由器,然后路由器通过公网ip访问互联网查询到数据,然后路由器再将查询到的数据传递到私有ip地址。

子网掩码

子网掩码不能单独存在,它必须结合IP地址一起使用。
子网掩码用于将某个IP地址划分成网络地址和主机地址两部分。
不是某个IP的网络号和主机号决定子网掩码是什么,而是子网掩码决定了某个IP地址的网络号与主机号是什么

常用的子网掩码有数百种,以下为最常用的两种子网掩码:

  • 255.255.255.0
    最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。
  • 255.255.0.0
    后面两个数字可以在0~255范围内任意变化,可以提供2552个IP地址。但是实际可用的IP地址数量是255*255-2,即65023个。

IP地址的子网掩码设置不是任意的。如果将子网掩码设置过大,容易超时并导致网络传输错误。因此,如果一个网络的规模不超过254台电脑,采用“255.255.255.0”作为子网掩码就可以了。
局域网最常使用的IP地址“192.168.x.y”默认的子网掩码是“255.255.255.0”。x相同,y不同的设备属于一个掩码为“255.255.255.0”的同一子网中,俗称属于同一网段。

网关

网关实质上是一个网络通向其他网络的IP地址(即内网通向外部的桥梁),既可以用于广域网互连,也可以用于局域网互连。
网关地址总是与计算机IP地址是同一网段的。不同网段的设备必须通过网关通讯。
通常默认网关即为路由器地址。

比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192. 168.2.254”,子网掩码为255.255.255.0。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。

网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。

Windows固定IP

  1. cmd中输入ipconfig /all查看当前IP和DNS
  2. WiFi=>WLAN=>更改适配器选项=>属性=>WLAN属性=>IPV4

查看指定域名的ip地址

ping

解析顺序是系统缓存--hosts--缓存服务器--主服务器--辅服务器
查到则直接返回,因此只会返回一条数据

nslookup

直奔dns进行查询,可以查到该域名所有对应的ip(可能多个)

你可能感兴趣的:(TCP/IP、HTTP(S)、MQTT、AMQP、FTP、网关、子网掩码)