网络传输方式
传输方式
网络通信中根据数据发送方式进行了多种分类,分类方法主要有两种:
- 面向无连接
- 面向有连接
数据发送的方法主要是 TCP 和 UDP
面向无连接
面向无连接型不需要建立和断开连接,发送端可于任何时候*发送数据,不需要确认接收端是否存在,即使接收端不存在或无法接收数据,发送端也能将数据发送出去,接收端也不知道自己会在何时从哪里接收到数据,因此,面向无连接的情况下,接收端需要时常确认是否收到了数据
面向有连接
面向有链接型在发送数据之前,需要在收发主机之间建立一条连接通信线路,只有对方确认连接才能进行真正的通信,通信结束后需要断开连接,因此必须在通信传输前后专门进行建立和断开连接的处理
DNS服务器
DNS(domain name system)域名解析系统,是一台运行在互联网上的服务器,用来将域名转成对应的IP地址
浏览器请求流程
计算机之间互访,只能识别IP地址的访问,不能识别域名的访问,所以需要通过DNS服务器用域名查询对应的IP地址
客户端访问域名 --> 请求本地DNS --> 请求DNS服务器 --> 获取目标IP地址 --> 建立连接 --> 服务器返回HTML --> 渲染
本地DNS
本地DNS是一个文件hosts,内容为IP地址和域名的对应关系表
hosts文件路径:
Windows:C:\Windows\System32\drivers\etc\hosts
Linux:/etc/hosts
长连接和短连接
HTTP1.0中默认使用短连接,也就是浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就断开连接,如果浏览器访问的某个Web页中包含其他的Web资源,如JS文件、CSS文件、图片文件等,浏览器每遇到这样一个Web资源就会建立一次HTTP会话
从HTTP1.0开始默认使用长连接,以保持连接特性,使用长连接的HTTP协议会在响应头加入以下协议项:
connection:keep-alive
在真正的读写操作之前,server与client之间必须建立一个连接,读写操作完成后,双方不再需要这个连接时可以释放连接,连接的建立通过三次握手,断开则需要四次挥手
每个连接的建立都是需要消耗资源和时间的
TCP短连接
- client向server发起连接请求
- server接到请求,双方建立连接
- client向server发送数据
- server回应client
- 一次读写完成,此时任意一方都可以发起close
短连接一般只会在client/server间传递一次读写操作
TCP长连接
- client向server发起连接请求
- server接到请求,双方建立连接
- client向server发送数据
- server回应client
- 一次读写完成,连接不关闭,等待下一次读写操作
- 长时间操作之后client发起close
长连接和短连接的优缺点
- 长连接可以省去较多TCP建立和关闭的操作,节约时间
- 如果用户量太大,容易造成服务器负载过高最终导致服务不可用
- 短连接对于服务器来说实现较为简单,存在的连接都是有用的连接,不需要额外的控制手段
- 如果用户量太大,可能在很短的时间内需要创建大量连接,容易造成服务器响应速度过慢
运用场景:
- 短连接:
- 小型Web网站的HTTP服务一般使用短连接,因为长连接会消耗服务器一定资源来保持socket存活(keep-alive)
- 长连接:
- 中大型Web网站一般使用长连接,优点是响应用户请求的速度更快,用户体验更好
- 数据库的连接使用长连接,如果使用短连接,频繁的通信可能会造成socket错误