此次为准备腾讯的实习生面试而准备(移动客户端开发岗)。
TCP/IP 参考模型或者说体系结构:(从上往下)应用层、传输层、网络层/IP层、 网络接口层(数据链路层和物理层)。
重要概念:
应用层:实际是应用进程,协议有http,SMTP,ftp,DNS等(也可称为服务类型);客户-服务器方式:客户端是服务请求方,服务器是服务提供方。
传输层:协议有TCP,UDP;主机中两个进程之间(端到端)的通信;端口号(用来标志应用层的进程,如http的端口号是80,ftp的端口号是21);传输单位是报文段:TCP报文段 或UDP 用户数据报。
网络层:协议是IP协议;分组交换网上不同主机之间的通信;32位的IP地址;传输单位是分组或包:IP分组或IP数据报;选择合适的路由。
数据链路层:停止等待协议,ARQ等;相邻结点(主机或路由器)间通信;48位的物理地址;传输单位是帧。
物理层:透明地传输比特流(表示经实际电路传输后的比特流没有发生变化)。
几个知识点:
1. TCP与UDP 区别:
(1)概念:TCP是传输控制协议,UDP是用户数据报协议。
(2)可靠性:TCP面向连接,提供可靠交付;UDP无需建立连接,尽最大努力交付,不可靠交付。
(3)TCP报文段走的是可靠的全双工信道:有序、无差错、无丢失、无重复。
(4)传输大小:UDP每次传输的数据必须限定在64KB之内,TCP可以按照统一格式传输大量数据。
(5)传输效率:UDP没有拥塞控制,TCP传输效率不如UDP高,UDP适用于允许丢失一些数据但不允许太大时延的应用,如视频会议。
(6)TCP就像打电话,UDP就像写信。
2. TCP三次握手(建立连接):
(1)采用客户服务器方式建立连接。
(2)过程:客户端发送建立连接请求->服务器端同意并发回确认->客户端再发送确认(此时TCP连接已建立)。
(3)为什么要发送第三个报文段:主要防止已失效的连接请求报文段突然又传送到了服务器端(网络堵塞时,连接请求报文段可能被延误),因而产生错误。
3. TCP释放连接:
主机A发送连接释放请求->主机B同意并发回确认(此时连接处于半关闭状态:主机B不再接受主机A发送的数据,但主机A可以接受主机B发送的数据)->主机B发送连接释放请求->主机A同意并发回确认(此时TCP连接完全释放)。
4. TCP重要功能:
(1)流量控制:
TCP采用大小可变的滑动窗口进行流量控制(控制向网络注入分组的速率)。
(2)拥塞控制:
发送端利用发送窗口(这个窗口取决于对方的接收窗口)调节向网络注入分组的速率不仅是为了使接收端来得及接收,而且还是为了对网络进行拥塞控制;发送窗口的上限值=Min[ 接收端窗口,拥塞窗口 ]。
1)慢开始和拥塞避免:
2)快重传和快恢复
5. http协议(超文本传送协议):
http是一个面向事务的客户服务器协议,本身也是无连接的。注:事务指一系列的信息交换,而这一系列的信息交换是一个不可分割的整体,要么所有的信息交换都完成,要么一次交换都不进行。
详见参考文章:HTTP协议详解(真的很经典)
6. 路由器:只有下三层协议,没有传输层协议。