【图解网络协议】面试官:三次握手都不会,回去等通知吧
一、网络基础知识准备
1、OSI 七层网络模型总结:
上 3 层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。
第 4 层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分
下面 4 层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能, 即以节点到节点之间的通信为主
2、TCP/IP 协议总结:
应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、 网络远程访问协议(Telnet)等。
传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、 用户数据报表协议(UDP)等,TCP 和 UDP 给数据包加入传输数据并把它传输到下一层中, 这一层负责传送数据,并且确定数据已被送达并接收。
网络互连层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目 的主机(但不检查是否被正确接收),如网际协议(IP)。
主机到网络层:对实际的网络媒体的管理,定义如何使用实际网络 (如 Ethernet、Serial Line 等)来传送数据。
3、TCP 协议流程:
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,即在收发数据钱 ,都需要与对面建立可靠的链接,这也是面试经常会问到的 TCP 的三次握手以及 TCP 的四次挥手!
三次握手: 建立一个 TCP 连接时,需要客户端和服务端总共发送 3 个包以确认连接的建立, 在 Socket 编程中,这一过程由客户端执行 connect 来触发,具体流程图如下
四次挥手: 终止 TCP 连接,就是指断开一个 TCP 连接时,需要客户端和服务端总共发送 4 个包以确认连接的断开。 在 Socket 编程中,这一过程由客户端或服务端任一方执行 close 来触发,具体流程图如下:
为什么建立连接是三次握手,而关闭连接却是四次挥手呢?因为服务端在 LISTEN 状态下,收到建立连接请求的 SYN 报文后,把 ACK 和 SYN 放在一个报文里 发送给客户端。而关闭连接时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还 能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即 close,也可以发送一些 数据给对方后,再发送 FIN 报文给对方来表示同意现在关闭连接,因此,己方 ACK 和 FIN 一般都会 分开发送。
4、UDP 协议:
UDP(User Datagram Protocol)用户数据报协议,非连接的协议,传输数据之前源端和终端不 建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 在发送端,UDP 传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽 的限制;在接收端,UDP 把每个消息段放在队列中,应用程序每次从队列中读一个消息段。 相比 TCP 就是无需建立链接,结构简单,无法保证正确性,容易丢包
5、什么是 socket
socket 是在应用层和传输层之间的一个抽象层,它把 TCP/IP 层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。
Socket 通信模型:
Socket 通信实现步骤解析:1:创建 ServerSocket 和 Socket2:打开连接到的 Socket 的输入/输出流 3:按照协议对 Socket 进行读/写操作 4:关闭输入输出流,以及 Socket
二、http 协议
1、什么是 http 协议
hypertext transfer protocol(超文本传输协议),TCP/IP 协议的一个应用层协议,用于 定义 WEB 浏览器与 WEB 服务器之间交换数据的过程。客户端连上 web 服务器后,若想获得 web 服务器 中的某个 web 资源,需遵守一定的通讯格式,HTTP 协议用于定义客户端与 web 服务器通迅的格式。
2、http 1.0 与 http 1.1 的区别
1.0 协议,客户端与 web 服务器建立连接后,只能获得一个 web 资源! 而 1.1 协议,允许客户端与 web 服务器建立连接后,在一个连接上获取多个 web 资源!
3、Http 协议的底层工作流程:
了解两个名词
SYN(synchronous):TCP/IP 建立连接时使用的握手信号
ACK(Acknowledgement):确认字符,确认发来的数据已经接受无误
TCP/IP 三次握手的概念:
客户端发送 syn 包(syn = j)到服务器,进入 SYN_SEND 状态,然后等待服务器确认
服务器收到 syn 包,确认客户的 syn(ack = j + 1),同时在自己也发送一个 SYN 包(syn=k), 即 SYN + ACK 包,服务器进入 SYN_RECV 状态
客户端收到 SYN + ACK 包,向服务器发送确认包 ACK(ack = k +1),发送完毕后,客户端与服务端 进入 ESTABLISHED 状态,完成三次握手,然后两者开始传送数据
http 操作流程:
用户点击浏览器上的 url(超链接),Web 浏览器与 Web 服务器建立连接
建立连接后,客户端发送请求给服务器,请求的格式为: 统一资源标识符(URL)+协议版本号(一般是 1.1)+MIME 信息(多个消息头)+一个空行
服务端收到请求后,给予相应的返回信息,返回格式为: 协议版本号 + 状态行(处理结果) + 多个信息头 + 空行 + 实体内容(比如返回的 HTML)
客户端接收服务端返回信息,通过浏览器显示出来,然后与服务端断开连接;当然如果中途 某步发生错误的话,错误信息会返回到客户端,并显示,比如:经典的 404 错误!
4、http 协议的业务流程
5、http-get 请求和 post 请求对比
GET:在请求的 URL 地址后以?的形式带上交给服务器的数据,多个数据之间以 &进行分隔, 但数据容量通常不能超过 2K,比如:http://xxx?username=…&pawd=…这种就是 GET
POST: 这个则可以在请求的实体内容中向服务器发送数据,传输没有数量限制
GET 安全性非常低,Post 安全性较高, 但是执行效率却比 Post 方法好,一般查询的时候我们用 GET,数据增删改的时候用 POST!!
6、http 协议的特点
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、 HEAD、POST。每种方法规定了客户与服务器联系的类型不同。 由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求, 并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。 缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每 次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
三、https 协议
1、什么是 https 协议
(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
评论