1.UDP和TCP区别
- TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
- 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
- TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
- TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
- TCP对系统资源要求较多,UDP对系统资源要求较少
- UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信
2.TCP协议-如何保证传输可靠性
- 校验和:TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
- 确认应答与序列号:将接收到的数据根据序列号排序,并且去掉重复序列号的数据
- 超时重传:是发送方在发送完数据后等待一个时间,时间到达没有接收到ACK报文,那么对刚才发送的数据进行重新发送
- 连接管理:三次握手与四次挥手的过程
- 流量控制:控制发送方发送速率,保证接收方来得及接收
- 拥塞控制: 当网络拥塞时,减少数据的发送。
3.计算机网络体系结构
- OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
- TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。
- 五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。
4.每一层的作用
- 物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
- 数据链路层:将比特组装成帧和点到点的传递(帧Frame)
- 网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
- 传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
- 会话层:建立、管理和终止会话(会话协议数据单元SPDU)
- 表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
- 应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
5.每一层的协议
- 物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关)
- 数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
- 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
- 传输层:TCP、UDP、SPX
- 会话层:NFS、SQL、NETBIOS、RPC
- 表示层:JPEG、MPEG、ASII
- 应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
6.浏览器输入url全过程
- 1 DNS域名解析
- 2 建立TCP链接(三次握手):拿到ip地址连接服务器
- 3 发送HTTP请求:构建HTTP请求报文并通过TCP协议中发送到服务器指定端口
- 4 服务器处理请求
- 5 返回响应结果:HTTP响应报文也是由三部分组成: 状态码, 响应报头和响应报文。
- 6 关闭TCP连接(四次挥手)
- 7 浏览器解析渲染页面
7.DNS解析过程
- 1.浏览器首先在自己缓存中查找是否有该域名解析过的IP地址,如果有则直接返回IP,解析过程结束。
- 2.浏览器向本机操作系统查找是否有缓存域名解析对应的IP地址,如果有则返回IP,解析过程结束。
- 3.浏览器向本地DNS服务器发送请求,本地域名服务器 查询自己的DNS缓存,查找成功则返回结果,解析过程结束
- 4.本地域名服务器向根服务器发送请求,根服务器向本地域名服务器返回顶级域名服务器地址
- 5.本地域名服务器向顶级域名服务器地址发送请求,顶级域名服务器返回权限域名服务器地址
- 6.本地域名服务器向权限域名服务器发送请求,权限域名服务器将解析结果返回给本地域名服务器
- 7.本地域名服务器 将得到的IP地址返回给操作系统,同时自己也将IP地址缓存起来
- 8.操作系统将 IP 地址返回给浏览器,同时自己也将IP地址缓存起来
8.TCP三次握手和四次挥手
- 三次握手
第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN。此时客户端处于 SYN_SENT 状态。
第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s)。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD 的状态。
第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接。
- 为什么是三次?
第三次握手是为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误。
譬如发起请求遇到类似这样的情况:客户端发出去的第一个连接请求由于某些原因在网络节点中滞留了导致延迟,直到连接释放的某个时间点才到达服务端,这是一个早已失效的报文,但是此时服务端仍然认为这是客户端的建立连接请求第一次握手,于是服务端回应了客户端,第二次握手。
如果只有两次握手,那么到这里,连接就建立了,但是此时客户端并没有任何数据要发送,而服务端还在傻傻的等候佳音,造成很大的资源浪费。所以需要第三次握手,只有客户端再次回应一下,就可以避免这种情况。
- 四次挥手
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1, Server进入CLOSED状态,完成四次挥手
9.路由器,交换机,网关
- 路由器:作用是连通不同的网络,另一个作用是选择信息传送的线路
- 交换机:连接路由器(或上一级交bai换du机)和电脑(或下一级交换机)的设备
- 网关:网关(gateway)能在不同协议间移动数据,而路由器(router)是在不同网络间移动数据,相当于传统所说的IP网关