网络分层
TCP
1、面向连接,不是真正意义上的物理连接,而是彼此之间通过报文互相响应之后进行通讯的连接。 2、可靠性,超时重传和报文应答保证他们的可靠性。 3、往返时延指的是当次传输两端加起来的时间,这个时间是一直在变化的,超过这个时间即重传。 4、数据排序:我们的报文很大,分成很多分,对其进行排序。 5、如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。 6、全双工指的是两边都可以发送和接收。
三次握手和四次挥手
三次握手 建立一个TCP连接时,需要客户端和服务 面试点 端总共发送3个包以确认连接的建立。 第一次握手 客户端请求建立连接。 第二次握手 服务端应答客户端,并请求建立连接。 第三次握手 客户端针对服务端请求确认应答。 为什么需要3次握手? TCP是面对连接的,所以需要双方都确认连接的建立。
四次挥手 定义 断开一个TCP连接时,需要客户端和服务端总共发送4个包以 确认连接的断开。 第一次挥手:客户端发送关闭请求 第二次挥手:服务端响应客户端关闭请求 第三次挥手:服务端发送关闭请求 第四次挥手:客户端发送关闭确认请求 为什么需要四次挥手 TCP是双全工(即客户端和服务器端可以相互发送和接收请求),所以需要双方都确认关闭连接。 为什么需要TIME-WAIT状态? 时间是1-4分钟,如果往服务端发送的确认报文超时是要重传的,而且当前没有关闭的时候端口不会被回收,如果服务器这个时候还有数据过来不会被其他可能新创建的同样端口的程序接收过去。
一次完整的网络请求
以打开百度网页为例: 1、首先进行DNS域名解析(本地浏览器缓存、操作系统缓存或者DNS服务器) 2、三次握手建立 TCP 连接 3、客户端发起HTTP请求 4、服务器响应HTTP请求 5、客户端解析html代码,并请求html代码中的资源 6、客户端渲染展示内容 7、关闭 TCP 连接
Socket
socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,其实就是一个门面模式。 TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)。
|