我想运行tcpdump一些参数(仍然不知道要使用什么),然后加载stackoverflow.com页面.
输出应该是HTTP通信.后来,我想将它用作shell脚本,所以每当我想检查站点site.com的HTTP通信时,我就可以运行了script.sh site.com.
HTTP通信应该足够简单.像这样:
GET /questions/9241391/how-to-capture-all-the-http-communication-data-using-tcp-dump
Host: stackoverflow.com
...
...
HTTP/1.1 200 OK
Cache-Control: public, max-age=60
Content-Length: 35061
Content-Type: text/html; charset=utf-8
Expires: Sat, 11 Feb 2012 15:36:46 GMT
Last-Modified: Sat, 11 Feb 2012 15:35:46 GMT
Vary: *
Date: Sat, 11 Feb 2012 15:35:45 GMT
....
decoded deflated data
....
Run Code Online (Sandbox Code Playgroud)
现在,我应该使用哪些选项tcpdump来捕获它?
我需要通过可能有损的网络将数据包从一个主机发送到另一个主机.为了最小化数据包延迟,我不考虑TCP/IP.但是,我希望最大化吞吐量uisng UDP.应该使用的UDP数据包的最佳大小是多少?
以下是我的一些注意事项:
网络中交换机的MTU大小为1500.如果我使用大数据包,例如8192,则会导致碎片.丢失一个片段会导致丢失整个数据包,对吧?
如果我使用较小的数据包,我将产生UDP和IP头的开销
如果我使用一个非常大的数据包,我可以使用的最大数据包是多少?我读到最大的数据报大小是65507.我应该使用什么缓冲区大小来发送这样的大小?这有助于提高我的吞吐量吗?
常见操作系统(例如Windows,Linux等)支持的典型最大数据报大小是多少?
更新:
数据的一些接收器是未实现TCP/IP堆栈的嵌入式系统.
我知道这个地方到处都是那些非常喜欢使用可用内容的人.但我希望能得到更好的答案,而不仅仅关注MTU.
我想使用能够发送和接收文件的套接字和C/C++语言实现在Linux上运行的客户端 - 服务器体系结构.是否有任何库使这项任务变得简单?有人可以提供一个例子吗?
我有一个简单的程序来检查端口是否打开,但我想缩短套接字连接的超时长度,因为默认值太长.我不知道该怎么做.这是代码:
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <netdb.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char **argv) {
u_short port; /* user specified port number */
char addr[1023]; /* will be a copy of the address entered by u */
struct sockaddr_in address; /* the libc network address data structure */
short int sock = -1; /* file descriptor for the network socket */
if (argc != …Run Code Online (Sandbox Code Playgroud) 我正在使用jdk1.6.0_23安装CSVN,我收到以下Java错误:
2011-02-10 16:25:50,951 [WrapperJarAppMain] WARN util.GrailsUtil - [WARNING] Property [ldapServerPort] of domain class com.collabnet.svnedge.console.Server has type [int] and doesn't support constraint [nullable]. This constraint will not be checked during validation.
2011-02-10 16:25:51,117 [WrapperJarAppMain] ERROR ehcache.Cache - Unable to set localhost. This prevents creation of a GUID. Cause was: vkqgae01: vkqgae01
java.net.UnknownHostException: vkqgae01: vkqgae01
at java.net.InetAddress.getLocalHost(InetAddress.java:1354)
at net.sf.ehcache.Cache.<clinit>(Cache.java:143)
Run Code Online (Sandbox Code Playgroud)
我的服务器有3个NIC(eth0,eth1和eth2).我在以下主机文件中添加了一个条目,包含以下内容:127.0.0.1 vkqgae01
我可以成功ping vkqgae01,但nslookup无法解决它.
有任何想法吗?
我在一个新应用程序中使用Alamofire(基于Alamofire的下载管理器示例)我需要一些关于使用后台会话下载文件的说明.我需要覆盖SessionDelegate才能使它工作?还是只是backgroundCompletionHandler?
通常使用Alamofire处理后台下载的步骤是什么?我如何处理我的应用程序相关的情况,下载量不断变化.
我已经意识到我过去曾问过几个问题,比如这个问题真的归结为一个更基本的问题.
是否有任何众所周知的网络通信设计模式,以及它的性质,协议构造/解析?谷歌搜索没有透露太多.
请注意,我不是在寻找任何给定问题的解决方案,我正在寻找处理网络通信及其协议的文档化设计模式.
编辑:
请不要提出各种实现细节或讨论特定协议,除非它与设计模式相关联.协议设计不是问题,它是用于创建或解析我正在寻找的协议的设计模式,更不用说通信模式本身了.
EDIT2:
我发现很难相信没有人提出任何常见的网络通信模式.是的,我知道"这取决于",但你可以说任何项目,但有很多模式涵盖一般的想法.
我需要开发一个连接到TCP服务器的服务.主要任务是读取传入消息,并在十分钟内将命令发送到服务器,如同步命令.例如,我使用了TcpClient对象,如下所示:
...
TcpClient tcpClient = new TcpClient();
tcpClient.Connect("x.x.x.x", 9999);
networkStream = tcpClient.GetStream();
clientStreamReader = new StreamReader(networkStream);
clientStreamWriter = new StreamWriter(networkStream);
while(true)
{
clientStreamReader.Read()
}
Run Code Online (Sandbox Code Playgroud)
此外,当我需要在任何方法中写出一些内容时,我使用:
clientStreamWriter.write("xxx");
Run Code Online (Sandbox Code Playgroud)
这种用法是否正确?或者,还有更好的方法?
Web服务器如何在单个端口上同时处理多个传入请求(80)?
示例:同时,300k用户希望从www.abcdef.com看到分配了IP 10.10.100.100和端口80的图像.那么www.abcdef.com如何处理这些传入用户的负载?
一台服务器(分配有IP 10.10.100.100)可以处理这么多的传入用户吗?如果没有,那么如何将一个IP地址分配给多个服务器来处理此负载?