计算机网络非常重要的一个功能就是通信传输,互联互通。比如我用QQ 给你的QQ发了一个消息,或者我用Chrome浏览器访问CCTV看新闻联播。接下来要说的就是数据从一台电脑到另一台电脑怎么传输的。
在说OSI内容之前先说一个日常生活中去邮局寄信的场景。写完信后,把信装信封里面,信封上面写上寄件地址和收件地址。去邮局里面,邮局工作人员把信件根据地址分类放到不同的袋子里,转袋子,再装车发走。到达地方后,卸车 => 邮递员送到你手里 => 拆信封 => 读信。
OSI(Open Systems Interconnection)是国际标准化组织(ISO)定义的网络参考模型,它将计算机网络中的通信功能分为七个层次,每个层次都有特定的功能和协议。
1.物理层:把电脑连接起来的物理手段,可以电缆、双绞线、无线电波等方式,主要作用是负责传输0和1
2.数据链路层:单纯的0和1没有任何意义的,必须规定解读方式:多少个电信号算是一组?每个电信号位有何意义?它在 物理链路层的上方,确定了0 和 1 的分组方式。
3.网络层:引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做“网络地址”(IP地址) 。主要是建立主机和主机之间的通信。
4.传输层:为了确定传输的数据包到底给哪个程序(进程)使用,又有了端口。 只要确定了主机和端口,我们就能实现程序和程序之间的交流。
5.会话层:负责建立和断开通信连接,以及数据的分割等数据传输相关的管理。(何时建立连接?何时断开连接?保持多久的连接?)
6.表示层:设备固有的数据格式 与 网络标准数据格式之间的转换(接受不同的信息,如文字流、图像、声音)
7.应用层:针对特定应用的协议(如远程登录协议SSH,文件传输协议FTP,网络请协议HTTP)
问题:
http 与 tcp 的关系?
HTTP是应用层协议,TCP是传输层协议。
HTTP是一种应用层协议,用于在Web浏览器和Web服务器之间传输数据。HTTP使用TCP作为其传输层协议,TCP的三次握手建立连接,然后使用TCP的数据传输机制进行数据传输。
TCP是一种传输层协议,应用于两个应用程序之间提供可靠的、面向连接的数据传输。TCP确保数据在传输过程中准确无误地到达目标地址,并提供流量控制和拥塞控制机制,以保护网络免受过多的数据流量和网络拥塞。
因此,HTTP和TCP是密切相关的,HTTP应用层协议使用TCP传输层协议提供可靠的数据传输和错误校验机制,确保数据的准确传输。
tcp 可以建立多个连接吗?
TCP是传输层协议,传输层一些是端口到端口之间的通信。TCP通过四元组(源IP地址、源端口号、目的IP地址、目的端口号)来区别不同的连接,因此可以在同一主机或者不同主机之间建立多个TCP连接。
在同一主机上,不同的应用程序可以使用不同的端口号建立TCP连接,从而实现多个连接。
在不同主机之间,每个主机都可以同时建立多个TCP连接,以便同时进行多个通信会话。
每个TCP连接都会占用一定的系统资源,包括内存、CPU、带宽等,因此在建立多个TCP连接时需要考虑系统资源的限制。
介绍一下为什么要有 三次握手,四次挥手?
TCP(Transmission Control Protocol)是一种可靠的、面向连接的协议,用于在网络上进行数据传输。TCP的连接建立和连接释放需要进行三次握手和四次挥手,以确保数据传输的可靠性和正确性。
三次握手过程如下:
-
客户端向服务器发送一个SYN(Synchronize)标志的数据包,表示客户端请求建立连接。
-
服务器接收到客户端的请求后,向客户端发送一个SYN-ACK(Synchronize-Acknowledge)标志的数据包,表示服务器已经收到了客户端的请求,并且同意建立连接。
-
客户端接收到服务器的响应后,向服务器发送一个ACK(Acknowledge)标志的数据包,表示客户端已经收到了服务器的响应,并且同意建立连接。
四次挥手过程如下:
-
客户端向服务器发送一个FIN(Finish)标志的数据包,表示客户端希望关闭连接。
-
服务器接收到客户端的请求后,向客户端发送一个ACK标志的数据包,表示服务器已经收到了客户端的请求,并且同意关闭连接。
-
如果服务器还有数据需要发送给客户端,服务器会继续发送数据,直到数据发送完毕。
-
服务器向客户端发送一个FIN标志的数据包,表示服务器已经完成数据发送,并希望关闭连接。
以上过程的原因如下:
三次握手是为了确保客户端和服务器之间的连接建立是可靠的和正确的。第一次握手是客户端向服务器发出连接请求,第二次握手是服务器收到请求并确认,第三次握手是客户端收到确认并确认。这样可以确保双方都已经准备好建立连接,避免因为网络丢包等原因导致连接建立失败。
四次挥手是为了确保客户端和服务器之间的连接关闭是可靠的和正确的。第一次挥手是客户端向服务器发出关闭请求,第二次挥手是服务器收到请求并确认,第三次挥手是服务器发送剩余数据并请求关闭连接,第四次挥手是客户端收到请求并确认。这样可以确保双方都已经完成数据传输并准备好关闭连接,避免数据丢失和连接过早关闭导致数据不完整。
参考资料
一文读懂OSI七层模型与TCP/IP四层的区别/联 blog.csdn.net/qq_39521554…
一文走进 HTTP 与 TCP 协议www.51cto.com/article/661…