电路交换vs分组交换
电路交换:建立链接->通话(持续占用通信资源)->释放资源
分组交换:采用存储转发技术,将一个报文划分几个分组,每个分组独立传输(无需事先建立链接)
电路交换线路的传输效率很低,但数据传输可靠
计算机网络体系结构
物理层: 通过媒介传输比特,确定机械及电气规范,传输单位为bit
主要包括的协议为:IEE802.3 CLOCK RJ45
数据链路层: 将比特组装成帧和点到点的传递,传输单位为帧
主要包括的协议为MAC VLAN PPP
网络层:负责数据包从源到宿的传递和网际互连,传输单位为包
主要包括的协议为IP ARP ICMP
传输层:提供端到端的可靠报文传递和错误恢复,传输单位为报文
主要包括的协议为TCP UDP
应用层: 定义应用进程之间的通信和交互规则,传输单位为报文
主要包括的协议为FTP HTTP DNS SMTP
协议vs服务
协议:控制两个对等实体进行通信的规则的集合,协议是水平的
服务:下层通过层间接口向上层提供的功能,服务是垂直的
数据链路层
(1)分装成帧,透明传输,差错检测(检验码)
(2)CSMA/CA协议:载波监听->边听边发->冲突停止->延迟重发
ip地址到物理地址的转换
ip地址到物理地址的转换采用ARP(地址解析协议)。在局域网中,网络中实际传输的是帧,帧里面是目标主机的MAC地址。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。这个MAC地址就是通过地址解析协议获得的。所谓地址解析就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的ip地址,查询目标设备的MAC地址,以保证通信的顺利进行。
IPv4和IPv6的区别
(1)IPv4的地址位数是32位,IPv6是128位
(2)IPv6具有更小的路由表。IPv6的地址分配一开始就遵循聚类的原则,这使得路由器能在路由表中用一条记录表示一片子网,大大减少了路由器中路由表的长度,提高了路由器转发数据包的速度,增强了组播支持以及对流的支持。
(3)IPv6比IPv4的安全性更高。在使用IPv6网络中的用户可以对网络层的数据进行加密并对IP报文进行校验。
TCPvsUDP
TCP是一种面向连接的传输层协议,在传输数据之间必须先建立连接,数据传输结束后要释放链接。TCP提供可靠传输,它的可靠性体现在传输数据之前会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传输完断开连接。
UDP是无连接的,在传输数据之前不需要先建立连接,远程主机在收到UDP报文之后,不需要给出任何确认,虽然不可靠,但是高效,可用于即时通信。
TCP三次握手
为什么三次握手?(个人理解)
在尽可能少的握手次数下,保证数据可靠以及服务器资源不被浪费(如果只有两次,客户端不返回第三次,而发生错误,必然导致服务器资源的白白浪费)所以理应最后一次是客户端对服务器的确认,而三次是相对合理的。
TCP四次挥手
第二步结束处于半关闭状态,第二步和第三步中间服务器可能继续发数据,所以不能将2,3合为一步
等待2MSL客户机才CLOSED原因:
这TIME_WAIT状态的等待时间就是为了防止服务端没有收到客户端发送的第四次挥手的ACK数据包,从而向客户端重新发送第三次挥手的FIN数据包时,客户端能正常接收到FIN数据包并且向服务端发送第四次挥手的ACK应答数据包。避免服务器资源的浪费。
访问baidu.com
浏览器中输入URL
浏览器要将URL解析为IP地址,解析域名就要用到DNS协议。得到IP地址后,浏览器就要与服务器建立一个http连接。因此要用到http协议,http协议报文格式上面已经提到。http生成一个get请求报文,将该报文传给TCP层处理,所以还会用到TCP协议。如果采用https还会使用https协议先对http数据进行加密。TCP层如果有需要先将HTTP数据包分片,分片依据路径MTU和MSS。TCP的数据包然后会发送给IP层,用到IP协议。IP层通过路由选路,一跳一跳发送到目的地址。当然在一个网段内的寻址是通过以太网协议实现(也可以是其他物理层协议,比如PPP,SLIP),以太网协议需要直到目的IP地址的物理地址,有需要ARP协议。
DNS过程:首先主机会查询DNS的缓存,如果没有就给本地DNS发送查询请求。DNS查询分为两种方式,一种是递归查询,一种是迭代查询。如果是迭代查询,本地的DNS服务器,向根域名服务器发送查询请求,根域名服务器告知该域名的一级域名服务器,然后本地服务器给该一级域名服务器发送查询请求,然后依次类推直到查询到该域名的IP地址。DNS服务器是基于UDP的,因此会用到UDP协议。