在秋招过程中根据别人整理的网络编程知识点,进行的二次整理,主要是一些高频知识点。
1. TCP协议的三次握手和四次挥手
三次握手:
c -> s, 客户端向服务端发送带有SYN(同步标识位=1)的报文段seq(序号=x),c进入
SYN_SENT
状态;s -> c, 服务端接收到客户端发来的报文,检测SYN=1,知道客户端想和自己建立连接,则返回带有SYN(=1),ACK(确认标识位=x+1)的报文段seq(=y),s进入
SYN_RCVD
状态;c -> s,客户端检查服务端发来的信息(SYN, ACK,seq),再向其发送ACK(=y+1),服务端接收后检查ACK是否为y+1,是则建立链接完成三次握手,c和s都进入
ESTABLISHED
状态。
四次挥手:
c -> s, 客户端发送带有FIN(结束标识位)的seq(=x+2), ACK(=y+1),告诉服务端要断开连接,进入
FIN_WAIT_1
状态;s -> c, 服务端接收到FIN报文后向客户端发送ACK(=x+3),服务器进入
CLOSE_WAIT
状态,客户端收到后进入FIN_WAIT_2
状态;s -> c, 当服务器发送完剩下的数据后,向客户端发送带有FIN的seq(=y+1),并进入
LAST_ACK
状态;c -> s, 客户端向服务端发送ACK(=y+2),进入
TIME_WAIT
状态,等待2MSL(报文段最大生存时间),没有服务端响应则关闭连接。
2. 一定要三次握手的原因
客户端和服务端建立连接时,由于某种原因长时间驻留在网络节点中,无法达到服务器,因为TCP存在 超时重传机制 ,客户端会不断尝试建立连接,直到成功。假设后面成功建立连接,传输结束断开连接后,若之前客户端发送给的连接请求又被服务端接收,则服务端会以为客户端尝试再次建立连接,如果仅存在这两次握手,则服务端会同意与客户端建立连接,并一直等待客户端的响应,但实际客户端此时已经关闭,直到超出计数器的设定值,服务端才会认为服务异常,关闭这个连接,造成计算资源的浪费,而加入第三次握手的机制由于服务端没有等到客户端的再次响应则不会再建立该连接。
3. 挥手比握手多一次的原因
因为建立连接时,可以把SYN,ACK,seq放在同一个报文中进行传输,但是在断开连接时,服务端需要先将剩余的数据传输结束后,才能再向客户端发送FIN标识位以请求关闭连接,通常这里的ACK报文和FIN报文是分开传输的。
4. HTTP和HTTPS
HTTP: 是互联网上一种广泛的网络协议,是 客户端和服务端请求和应答的标准
HTTPS: 是以安全为目标的HTTP通道,即在HTTP的三次握手后加入SSL层,主要用于1) 建立安全通道保证数据传输的安全,2) 确认网站的安全性。
区别
HTTP协议是超文本传输协议,信息是明文传输,而HTTPS协议传输的数据是经过加密的,具有更高的安全性;
端口不同前者为80,后者是443
5. IP地址和MAC地址
IP地址是IP协议提供的统一的地址格式,为互联网上每一个网络和每一台主机分配一个逻辑地址,以屏蔽物理地址的差异
MAC地址是一个硬件地址,用来确认网络设备位置的地址,在OSI模型中右数据连接层负责。如果一台设备有多块网卡,则每个网卡都会有一个唯一的MAC地址。
6. 打开一个网站的过程,以及其对那个的各个层的过程
- 域名解析,浏览器获得URL地址,向操作系统请求该URL地址的IP地址,操作系统查询DNS(先查询本地HOST文件,没有则查询网络)获得对应的IP地址;
1 | URL 分割成几个部分:协议(http(s),ftp)、网络协议(域名、IP地址、端口号)、资源路径 |
- 确认好IP地址和端口号后,向该IP地址对应的服务器的该端口号发起TCP连接请求;
服务接收到TCP连接请求后,回复可以建立连接;
浏览器收到回传的数据后,还会向服务端发送数据包,表示三次握手的结束
三次握手成功后,开始通讯,客户端根据HTTP协议的要求,组织一个请求的数据包,其中包含请求的资源路径、身份信息等,服务器响应请求,将数据返回给浏览器,浏览器根据HTML协议组织网页,以此反复;
渲染页面,响应用户的操作;
关闭网页时,断开连接。
7. OSI七层模型和TCP/IP四层模型,每层用到的协议
OSI(Opening System Interconnection 开放系统互连)
- 第七层 应用层
为应用软件而设的接口
功能: 文件传输,电子邮件,文件服务等;
协议: HTTP,HTTPS,FTP
- 第六层 表示层
把数据转换为能与接收者的系统格式兼容并适合传输的格式
功能: 数据格式化,代码转换,数据加密
- 第五层 会话层
负责在数据传输过程中设置和维护计算机网络中两台计算机之间的通信连接
功能: 解除或建立与其他接点的联系
- 第四层 传输层
把传输表头加至数据以形成数据包。传输表头包含了所使用的协议等发送信息
功能: 提供端对端的接口
协议: TCP, UDP
- 第三层 网络层
决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文,网格表头包含了网络数据
功能: 为数据包选择路由
协议: IP
- 第二层 数据链路层
负责网络寻址、错误侦测和改错
功能: 传输有地址的帧,错误检测功能
协议: ARP, SLIP,RARP
- 第一层 物理层
在局部局域网上传送数据帧,负责管理计算机通信设备和网络媒体之间的互通,包括电压、网卡、主机接口卡等
功能: 以二进制形式在物理媒体上传输数据
协议: ISO2110, IEEE802
TCP/IP 4层网络模型
- 第四层 应用层
电子邮件,文件传输
网页访问使用http协议,文件传输FTP协议,电子邮件发送SMTP协议,域名解析DNS协议,远程登陆Talnet协议
- 第三层 传输层
TCP,UDP协议分析
- 第二层 网络层
检查IP地址,路由设置
- 第一层 网络接口层
ARP地址检测、物理连接检测
小结:
8. TCP和UDP
TCP面向连接(如打电话要先拨号建立连接),UDP在发送数据之前不需要建立连接;
TCP更加可靠,TCP传输的数据无差错,不丢失,不重复;
UDP较好的实时性,工作效率比TCP高,适用于对高速传输和实时性较高的通信或广播通信;
每一条TCP连接只能是点对点; UDP支持一对一,一对多,多对一和多对多的交互通信;
TCP对系统资源要求较多,UDP对系统资源要求较少;
要求数据的完成性应该适用TCP,如文件的传输、重要状态的更新; 要求实时性使用UDP,如视频传输、实时通信;
TCP面向字节流,UDP面向数据包
9. TCP的拥塞控制
发送维护一个拥塞窗口,由小到达逐渐增加拥塞窗口,探测网络的拥塞程度
快重传和快恢, 要求接收方在收到一个失序的报文段后就立即发出重复确认而不要等到自己发送数据时捎带确认。
10. DNS干什么的
DNS(Domain Name System 域名系统), 将域名和地址相互映射的一个分布式数据库,能够让人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
主机解析域名的顺序:
找缓存、找本及的hosts文件、找DNS服务器
根域名服务器:是互联网域名解析系统(DNS)中最高级别的域名服务器,负责返回顶级域的权威域名服务器地址,全球只有13台,中国境内是其镜像。