DNS域名解析协议
DNS:Domain Name Server(域名服务器)
作用:域名与对应的IP转换的服务器
特征:DNS中保存了一张域名与对应IP地址的表
一个域名对应一个IP地址,一个IP地址可以对应多个域名
如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。
我们都知道,TCP/IP中使用的是IP地址和端口号来确定网络上某一台主机上的某一个程序,不免有人有疑问,为什么不用域名来直接进行通信呢?
- 因为IP地址是固定长度的,IPv4是32位,IPv6是128位,而域名是变长的,不便于计算机处理。
- IP地址对于用户来说不方便记忆,但域名便于用户使用,例如www.baidu.com这是百度的域名。
HTTP协议
HTTP与HTTPS
HTTP:Hyper Text Transfer Protocol超文本传输协议
定义: 客户端与服务器请求和应答的标准,用于从WEB服务器传输超文本到本地浏览器的传输协议
HTTP请求:按照协议规则先向WEB服务器发送的将超文本传输到本地浏览器的请求
HTTPS:Hyper Text Transfer Protocol Secure 超文本传输协议
定义:HTTP的安全版(安全基础是SSL/TLS)
SSL: Secure Sockets Layer 安全套接层
TLS: Transport Layer Security 传输层安全
为网络通信提供安全及数据完整性的一种安全协议,对网络连接进行加密
区别:1、HTTP是不安全的(监听和中间人攻击等手段,获取网站账户信息和敏感信息)HTTPS可以防止被攻击
2、HTTP协议传输的内容都是明文,直接在TCP连接上运行,客户端和服务器都无法验证对方身份
3、HTTPS协议的传输内容都被SSL和TSL加密,且运行在SSL/TSL上,SSL/TSL运行在TCP连接上,所以数据传输是安全的
TCP/IP
TCP三次握手建立连接
TCP客户和TCP服务握手需要再它们之间交换三个TCP报文段,最开始两端的TCP进程都处于关闭状态,一开始TCP服务器进程首先创建传输控制块
1、客户端向服务端发送SYN标志位,并进入SYN _SEND状态 (等待服务器确认状态)
2、服务器收到来自客户端的SYN J,服务端会确认该数据包已经收到并发送ACK标准(序号是J+i) 和标志位(序号是K),服务器进入SYN_RECV(请求接收并等待客户端确认状态)
3、客户端进入连接建立状态后,向服务器发送ACK标志位(K+I)确认客户端已经收到建立连接确认,服务器收到ACK标志位后,服务端进入已经建立状态
为什么TCP客户进程最后还要发送一个普通的TCP确认报文段,是否多余?或者说能否利用两报文握手建立连接呢?
不多余,不能简化为两报文握手
如果出现这种情况:如果是两次握手
TCP客户进程发出一个TCP连接请求报文段,但该报文段再某些网络节点长时间滞留了,这必然会造成该报文段的超时重传,假设重传的报文段被TCP服务进程正常接收了,TCP服务器进程给TCP客户进程发送一个TCP连接请求确认报文段,并进入连接已建立状态,当TCP服务器进程发送完TCP连接请求确认报文段后,进入连接已建立状态,而不像三报文握手那样进入同步已接收状态,并等待TCP客户进程发来针对TCP连接请求确认报文段的普通确认报文段。TCP客户进程收到TCP连接请求确认报文段后,进入TCP连接已经建立状态,但不会给TCP服务器进程发送针对该报文段的普通确认报文段,现在双方都处于连接已建立状态,可以相互传输数据,并通过四报文挥手释放连接,一段时间后滞留再网络中的失效的那个TCP连接请求报文段到达了服务器进程,服务器进程会误认为,这是客户端又发起了一起新的连接请求,会发送连接请求确认报文段,并进入连接已建立状态,而此时的客户进程仍处于关闭状态,这就导致了资源的浪费
总结:
采用三报文握手而不是两报文握手是为了防止已失效的连接请求报文段突然又传送到TCP服务器,因而导致错误
APR协议等可参考:
https://blog.csdn.net/weixin_44325370/article/details/110102056