前言
从18年毕业至今,就职过两家公司,大大小小项目做了几个,非常感谢我的两位老大,在我的android成长路上给予我很多指导,亦师亦友的关系。
从年前至今参加面试了很多公司,也收到了几家巨头的offer,还有其他公司的。总结下经验,也是对过去的一个回顾和总结吧。
网络:分层模型、TCP、UDP、HTTP、HTTPS
分层模型
- 应用层:负责处理特定的应用程序细节,如 HTTP、FTP、DNS
- 运输层:为两台主机提供端到端的基础通信,如 TCP、UDP
- 网络层:控制分组传输、路由选择等,如 IP
- 链路层:操作系统设备驱动程序、网卡相关接口
UDP
- UDP 头结构:来源端口、目的端口、长度域、校验和
- 特点:不可靠、无序、面向报文、速度快、轻量
- 适用场景:适用于即时通讯、视频通话等
- 应用:DHCP、DNS、QUCI、VXLAN、GTP-U、TFTP、SNMP
TCP
- TCP 头结构:来源端口、目的端口、序号、确认序号、SYN/ACK 等状态位、窗口大小、校验和、紧急指针
- 特点:面向字节流、有拥塞和流量控制、可靠、有序、速度慢、较重量,通过滑动窗口实现流量控制、用塞控制
- 适用场景:文件传输、浏览器等
- 应用:HTTP、HTTPS、RTMP、FTP、SMTP、POP3
- 三次握手:
1\. C->S:SYN,seq=x(你能听到吗?)
2\. S->C:SYN,seq=y,ack=x+1(我能听到,你能听到吗?)
3\. C->S:ACK,seq=x+1,ack=y+1(我能听到,开始吧)
两方都要能确保:我说的话,你能听到;你说的话,我能听到。所以需