网络学习目标:能够理解并口头表达
学习方法:写博客
重点知识:
网络分层:OSI七层模型(了解)、TCP/IP四层或五层模型,每一层的代表协议,硬件,技术
网络传输层:网络互连(了解),局域网(了解),广域网
重点协议:
(1)TCP/UDP:掌握特性、原理和流程
(2)HTTP:掌握协议的格式,及某些细节上的作用
(3)其他的重要协议(在网络传输流程中使用到):ADR/RARP、DNS、NAT、NATP、MTU、IMCP
(4)网络传输流程中使用到的技术:以太网、路由、网关 + 子网掩码
OSI七层模型:
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
**网络设备:**集线器、交换机、路由器、主机
(交换机和路由器指传统设备,现在网络设备发展比较快,)
TCP/IP五层模型(四层模型没有物理层),从下到上:
代表硬件 协议/技术 特性
1、物理层: 双绞线、wifi电磁波、集线器等。 发送0、1光电信号
2、数据链路层:交换机 以太网、令牌环网、
无线LAN、ARP
3、网络层: 路由器 IP协议
4、传输层: TCP/UDP协议 (主机系统内核实现)
5、应用层: HTTP、DNS、NAT、NATP (应用程序实现的)
(了解)FTP、SMTP
对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
对于一台路由器, 它实现了从网络层到物理层;
对于一台交换机, 它实现了从数据链路层到物理层;
对于集线器, 它只实现了物理层;
1、get用于获取数据,post用于提交数据
2、get提交参数追加在url后面,post参数可以通过http body提交
3、get的url会有长度上的限制,则post的数据则可以非常大
4、get提交信息明文显示在url上,不够安全,post提交的信息不会在url上显示
5、get提交可以被浏览器缓存,post不会被浏览器缓存
HTTP状态码
数据包的封装和分用:
封装类似发送快递包裹,需要从内往外打包
分用类似拆快递,需要从外往内
五元组:
IP:定位网络中某一台主机,在网络层包装IP地址。本机IP默认为127.0.0.1
端口号:绑定主机中的某一个应用程序,应用程序都是通过在传输层包装端口号发送/接收数据
五元组:源IP + 源端口号 + 目的端口号 + 协议号
IP + 端口号:可以定位到网络上具体的某一个应用程序
发送数据:五元组 接收端响应数据:目的IP + 目的端口号 = 发送数据包中的源IP + 源端口
MAC地址:MAC地址用来识别数据链路层中相连的结点(网卡绑定的物理地址)
网络互联(集线器)(了解)
场景:主机A发送FTP“下载某个文件”数据包------->主机C
查找目的主机MAC地址:ARP协议(建立IP与MAC的映射)
1、查找本机ARP缓存表,通过目的IP查找目的MAC
2、如果找到,就直接发送数据包(广播)0
3、如果找不到,主机A广播一个ARP请求数据包----->所有主机接收到ARP数据包------->主机C发现是请求自己的MAC,就返回数据包(ARP响应)
其他主机:通过IP判断出不是请求自己的MAC,直接丢弃数据包
ARP请求数据包:通过目的IP查询目的MAC的请求,广播形式(FF:FF:FF:FF:FF:FF)发送
局域网:
广域网
UDP:
特性:
1、无连接
2、不可靠
3、面向数据包:最大不超过64k
4、有接收缓冲区,没有发送缓冲区
TCP:
特性:
1、有连接
2、可靠的
3、面向字节流
4、具有接收和发送缓冲区
TCP握手协议 :在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
1、第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态e68a84e8a2ade799bee5baa631333365646364,等待服务器确认; SYN:同步序列编号(Synchronize Sequence Numbers)
2、第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3、第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
所谓的三次握手(three times handshake;three-way handshaking)即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。
为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。
URL:
网络相关面试问题