使用Java程序进行通信时创建的HTTP,TCP数据包在哪里?

时间:2017-06-12 04:50:46

标签: java http tcp network-programming tcp-ip

当我编写一个与HTTP端点/服务器通信的Java程序时,理想情况下我会使用某个库来使用该库提供的类创建我的HTTP请求并进行调用。

我试图找出网络堆栈中每一步创建数据包的确切位置?当我使用这些HTTP库时,这些库的HTTP数据包创建处理?是谁将所有 HTTP标头信息放入并附加数据并创建数据包?

然后TCP数据包组装在哪里?它是在内核级别完成的吗?创建的HTTP数据包是否由 jvm 提交给内核网络模块,并且内核用 TCP 信息封装数据包等等?

我试图清楚地描绘出这些事情发生在哪里,这样我就可以弄清楚我想要在哪个项目构想中进行攻击。

谢谢你 沙比尔

1 个答案:

答案 0 :(得分:1)

  

当我使用这些HTTP库时,这些库的HTTP数据包创建处理?

没有HTTP数据包这样的东西。有HTTP请求和响应。见下文。

  

是谁将所有HTTP头信息放入并附加数据并创建数据包?

库创建标题。应用程序提供数据。

  

然后TCP数据包组装在哪里?

没有TCP数据包这样的东西。有TCP段和IP包(以及以太网帧,......)。见下文。

  

是在内核级别完成的吗?

  

JVM是否将创建的HTTP数据包提交给内核网络模块

基本上是的。

  

并且内核用TCP信息封装数据包等等?

是。具体来说,网络堆栈的TCP层提供TCP报头和分段,IP层提供IP报头和分组等。