TCP/IP
TCP/IP
互联网上每个计算机的唯一标识就是IP地址,类似123.123.123.123
。如果一台计算机同时接入到两个或更多的网络,比如路由器,它就会有两个或多个IP地址,所以,IP地址对应的实际上是计算机的网络接口,通常是网卡。
IP协议负责把数据从一台计算机通过网络发送到另一台计算机。数据被分割成一小块一小块,然后通过IP包发送出去。由于互联网链路复杂,两台计算机之间经常有多条线路,因此,路由器就负责决定如何把一个IP包转发出去。IP包的特点是按块发送,途径多个路由,但不保证能到达,也不保证顺序到达。
TCP协议负责在两台计算机之间建立可靠连接,保证数据包按顺序到达。TCP协议会通过握手建立连接,然后,对每个IP包编号,确保对方按顺序收到,如果包丢掉了,就自动重发。
一个TCP报文除了包含要传输的数据外,还包含源IP地址和目标IP地址,源端口和目标端口。
端口有什么作用?在两台计算机通信时,只发IP地址是不够的,因为同一台计算机上跑着多个网络程序。一个TCP报文来了之后,到底是交给浏览器还是QQ,就需要端口号来区分。每个网络程序都向操作系统申请唯一的端口号,这样,两个进程在两台计算机之间建立网络连接就需要各自的IP地址和各自的端口号。
一个进程也可能同时与多个计算机建立链接,因此它会申请很多端口。
网络层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。网络层定义了分组格式和协议,即IP协议(Internet Protocol )。
tcp连接
HTTP 是一个应用层协议,主要用于在网络上的客户端(如 Web 浏览器)和服务器之间传输超文本等多媒体信息。HTTP 依赖于底层的传输协议,即 TCP,来建立连接和传输数据。
TCP 是一种传输层协议,在互联网协议套件(TCP/IP)中负责在网络中的两个节点之间建立稳定的、有序的、可靠的双向连接。TCP 确保数据的正确传输,通过确认机制、重传控制、流控制等技术来保证数据完整性和顺序。
HTTP 和 TCP 的协作方式
- 连接建立:
- 当你在浏览器中输入一个网址并按下回车时,浏览器(客户端)开始通过解析该网址得到服务器的 IP 地址。
- 浏览器向服务器的 IP 地址发起一个 TCP 连接请求。这通常涉及一个叫做三次握手(three-way handshake)的过程,确保双方正确建立连接。
- SYN:客户端发送一个带有 SYN(同步序列编号)标记的数据包到服务器,以初始化一个连接。
- SYN-ACK:服务器接收到后,返回一个带有 SYN-ACK 标记的数据包,确认连接请求。
- ACK:客户端收到后,再次发送一个 ACK 确认包,完成连接建立。
- 数据传输:
- 一旦 TCP 连接建立,HTTP 协议就可以在这个稳定的连接上发送 HTTP 请求。HTTP 请求包括一个请求行(如 GET /index.html HTTP/1.1),请求头部,以及一个可选的消息体。
- 服务器接收到 HTTP 请求后,处理请求并将响应(状态行、响应头部和响应正文等)发送回客户端。所有这些数据传输都是通过已经建立的 TCP 连接来完成的。
- 连接终止:
- 传输完成后,客户端或服务器可以初始化关闭 TCP 连接的过程。这通常涉及到一个四次挥手(four-way handshake)过程。
- 任何一方都可以发送一个带 FIN 标记的 TCP 包,以关闭连接的一个方向。对方必须确认这个 FIN 包,并最终关闭另一方向的连接。
特性和优势
- 可靠性:TCP 保证数据正确无误地从源头传到目的地,即使在网络条件不佳的情况下。
- 数据顺序:TCP 确保即使数据包乱序到达,最终用户接收到的数据也是按正确顺序的。
- 拥塞控制:TCP 在网络拥塞时调整数据发送速率,减少网络负荷。
- 无状态:HTTP 是无状态的,每个请求独立处理,但可以通过在 TCP 连接上发送多个请求来提高效率(持久连接)。
通过 TCP 的可靠传输特性,HTTP 能够高效、安全地在互联网上进行通信,这是现代 Web 应用的基础。