互联网,实际上是一套理念和协议组成的体系架构
IP(网际)协议:
计算机地址就是ip地址, 访问任何网站实际上只是你的计算机向另一台计算机请求信息
主机A 主机B
数据包A 上层 数据包A
数据包A + IP头 网络层 数据包A + IP头
(数据部分 附加ip头) (数据部分 解析ip头)
底层
1.主机A的上层将含有 ‘数据包A’的数据包交给网络层
2.主机A的网络层将ip头附加到数据包上,并交给底层
3.底层通过物理网络将数据包传给主机B
4.数据包被传输到主机B的网络层,主机B在网络层拆开数据包的ip头信息,并将拆开的数据包移交到上层
5.最终 含有‘数据包A’信息的的数据包就到达主机B的上层了
UDP 用户数据包协议:
UDP 通过端口号把数据包分发给正确的程序。
不能确保一定能把数据包传输到客户端。但是速度快。一般用于在线视频、互动游戏等。
TCP(传输控制)协议:
面向连接的、可靠的、基于字节流的传输层通信协议
主机A 主机B
数据包A 上层 数据包A
数据包A + tcp头 传输层 数据包A + tcp头
(数据部分 附加tcp头) (解析TCP头,识别出端口,交给上层应用)
数据包A + tcp头 + IP头 网络层 数据包A + tcp头 + IP头
(数据部分 附加ip头) (解析ip头,识别出数据部分)
底层
1.主机A的上层将含有“数据包A ”的数据包交给传输层
2.主机A的传输层会在数据包前面附加上TCP头,并交给网络层
3.主机A的网络层再将IP头附加到数据包上,并交给底层
4.底层通过物理网络将数据包传给主机B
5.数据包被传输到主机B的网络层,主机B在网络层拆开数据包的ip头信息,并将拆开的数据包移交到传输层
6.在主机B的传输层,数据包中的tcp头会被拆开,识别出tcp中所提供的端口号,把数据部分交给上层的应用程序;
7.最终 含有‘数据包A ’信息的的数据包就到达主机B的上层应用程序了
完整的tcp连接
服务器 ----------------------------------------------------------------------------------------------------
^ | ^ | | | | ^ ^ ^ | | ^
| | | | | | | | | | | | |
| ⬇ | ⬇ ⬇ ⬇ ⬇ | | | ⬇ ⬇ |
客户端 -----------------------------------------------------------------------------------------------------
三次握手 传输 数据过程 四次挥手
建立连接 断开连接
首先,建立连接阶段。
通过“三次握手”来建立客户端和服务器之间的连接
TCP 提供面向连接的通信传输
所谓三次握手,是指在建立一个 TCP 连接时,客户端和服务器总共要发送三个数据包以确认连接的建立
其次,传输数据阶段。
接收端需要对每个数据包进行确认操作,如果发送端未收到接收端反馈的确认消息,则判断为数据包丢失,会触发发送端的重发机制
一个大的文件在传输过程中会被拆分成很多小的数据包,这些数据包到达接收端后,接收端会按照 TCP 头中的序号为其排序,从而保证组成完整的数据。
最后,断开连接阶段。
数据传输完毕之后,就要终止连接了,涉及到最后一个阶段“四次挥手”来保证双方都能断开连接。