TCP/IP和HTTP如何协同工作?
我正在和Wireshark一起调试我正在进行的一些物联网家庭自动化项目。我想如果我能更多地了解HTTP和TCP/IP是如何工作的,我会受益匪浅。我找到的大多数解释都将HTTP描述为“凌驾于”TCP/IP之上,但我要更具体地询问实际发送的内容 下面是我捕获的客户机/服务器交互示例:TCP/IP和HTTP如何协同工作?,http,networking,tcp,Http,Networking,Tcp,我正在和Wireshark一起调试我正在进行的一些物联网家庭自动化项目。我想如果我能更多地了解HTTP和TCP/IP是如何工作的,我会受益匪浅。我找到的大多数解释都将HTTP描述为“凌驾于”TCP/IP之上,但我要更具体地询问实际发送的内容 下面是我捕获的客户机/服务器交互示例: Client: [SYN] Server: [SYN, ACK] Client: [ACK] 如果我了解到目前为止,他们已经成功地建立了TCP连接。不过,下一个截图显示的是我 Client: POST /whatev
Client: [SYN]
Server: [SYN, ACK]
Client: [ACK]
如果我了解到目前为止,他们已经成功地建立了TCP连接。不过,下一个截图显示的是我
Client: POST /whatever
Server: 200 OK
好吧,现在我迷路了。检查该捕获显示我在一个帧中拥有以太网、IP、TCP和HTTP层。它是否真的像客户端在TCP数据包结束后添加一堆文本并将这些额外的字节喷射到路由器一样简单?然后,它大概会解析出TCP/IP并相应地转发它?这就是我困惑的根源。“骑在上面”是不是意味着(从物理意义上)HTTP只是在TCP数据包之后在同一帧中发送的一系列字节?在这种情况下,HTTP是否被视为TCP/IP的有效负载
当然要结束了
Server: [FIN, ACK]
Client: [ACK]
Client: [FIN, ACK]
Server: [ACK]
//In this case the server terminates the connection.
编辑:下面的一位评论员问了一个问题,这让我觉得我对自己的问题不是很清楚
想象一下,我可以站在我的客户机和服务器之间(或者站在我的客户机和路由器之间,再站在路由器和服务器之间可能更准确)。忽略必须通过物理介质(校验和、纠错码等)物理发送原始数据时的考虑因素,相对于时间,实际通信量会是什么样子?我会看到以太网层的字节,然后是ip层、tcp、http等的字节吗 网络层使用抽象和封装。下层封装了上层
- 应用层可以有自己的协议,例如HTTP。超文本传输协议 与目标设备上的HTTP通信,这是一个协议 它传输应用程序数据(HTML)
- 传输层(第4层)封装应用程序数据报, 并且它在网络上与相同的传输层协议进行通信 目标设备。一些传输协议有保证并创建 可靠性连接,例如TCP(段),但有些是 无连接,无任何保证,例如UDP(数据报)。目的 该层的功能是从一个应用程序到另一个应用程序获取应用程序数据 另一个应用程序。某些传输协议使用寻址(端口) 为了实现这一点,有些人使用其他东西,或者根本不使用
- 网络层将传输协议数据报封装到 数据包,并与目标设备网络协议进行通信。 该层的目的是从一台计算机上的设备获取数据包 将网络连接到另一个网络上的设备。路由器使用寻址 完成此任务的数据包头中的信息(IPv4、IPX、, IPv6、AppleTalk等地址)
- 数据链路层将网络分组封装成帧,并且 它与同一网络上设备的数据链路通信。 该层的目的是将帧传送到网络上的另一个设备 同一网络(PC打印机、路由器等)。一些数据链路协议 使用寻址(IEEE协议使用MAC寻址,48位或 64位MAC地址),一些使用其他地址(帧中继使用 DLCI、ATM使用VPI/VCI等),有些使用非寻址(仅限PPP) 有两个设备,因此不需要寻址)。协议可以更改 当封装的数据包从一个网络发送到另一个网络时 正在前往目标设备的途中。路由器剥去框架并 当他们将数据包从一个网络转发到另一个网络时丢弃它, 创建新帧以封装新网络的数据包
- 物理层(第1层)转换数据链路的帧 层(第2层)转换为“线路上的位”