
TCP/IP
文章平均质量分 85
Farmwang
博采众长,兼收并蓄!
展开
-
Linux 下 Tomcat Https
Step:1 申请SSLStep 2:在Tomcat安装目录 创建一个文件夹 如cert,一定要是根目录 <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true" keystoreFile="cert/152627775原创 2021-09-08 21:20:15 · 146 阅读 · 0 评论 -
SECS/GEM series: Protocol Layer
Protocol Layer DefinitionThe protocol layer implements the transport technology and data packing algorithms used to send messages across a wire between a factory host and an equipment GEM interface.The SEMI E5 standard, SEMI Equipment Communications ..转载 2021-02-23 06:52:40 · 484 阅读 · 1 评论 -
accept() 产生的Socekt端口是多少?
为了区分不同应用进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP 或 UDP)和使用的端口号。 Socket的原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。 accept()产生的Socket端口号是多少转载 2017-06-20 23:04:25 · 721 阅读 · 0 评论 -
再次深入理解TCP网络编程中的send和recv
本篇我们用一个测试机上的阻塞socket实例来说明主题。文章中所有图都是在测试系统上现截取的。需要理解的3个概念1. TCP socket的buffer每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的流量(拥塞)控制便是依赖于这两个独立的buffer以及buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调用r转载 2017-06-20 21:29:51 · 299 阅读 · 0 评论 -
TCP滑动窗口移动规则
一、TCP的滑动窗口大小实际上就是socket的接收缓冲区大小的字节数二、对于server端的socket一定要在listen之间设置缓冲区大小,因为,accept时新产生的socket会继承监听socket的缓冲区大小。对于client端的socket一定要在connet之前设置缓冲区大小,因为connet时需要进行三次握手过程,会通知对方自己的窗口大小。在connet之后再设置缓冲区,转载 2017-06-20 21:39:51 · 2037 阅读 · 0 评论 -
响TCP性能的协议因素:
响TCP性能的协议因素:(1)TCP连接建立握手(2)TCP慢启动拥塞控制;(3)数据聚集的Nagle算法;(4)用于捎带确认的TCP延迟确认机制。(5)TIME_WAIT时延和端口耗尽。1、2可通过长连接避免,3可使用TCP_NODELAY避免,4可通过调整内核栈参数避免,但调整需谨慎,5通常只在性能测试环境出现。其中最后一个T转载 2017-06-20 21:45:15 · 284 阅读 · 0 评论 -
shut_down和close()函数的区别
在Linux C网络编程中,一共有两种方法来关闭一个已经连接好的网络通信,它们就是close函数和shutdown函数,它们的函数原型分别为:1 #include2 int close(intsockfd)3 //返回:0——成功, 1——失败4 5 #include6 int shutdown(intsockfd,inthowto)7 //返回:0——成功, 1—转载 2017-06-20 21:50:19 · 1456 阅读 · 0 评论 -
Socket中的TIME_WAIT状态
根据TCP协议,主动发起关闭的一方,会进入TIME_WAIT状态,持续2*MSL(Max Segment Lifetime),缺省为240秒,在高并发短连接的server端,当server处理完client的请求后立刻closesocket此时会出现time_wait状态然后如果client再并发2000个连接,此时部分连接就连接不上了,用linger强制关闭可以解决此问题转载 2017-06-20 22:11:19 · 3795 阅读 · 0 评论 -
接收RST回应的几种情况
1 端口未打开服务器程序端口未打开而客户端来连接。这种情况是最为常见和好理解的一种了。去telnet一个未打开的TCP的端口可能会出现这种错误。这个和操作系统的实现有关。在某些情况下,操作系统也会完全不理会这些发到未打开端口请求。比如在下面这种情况下,主机241向主机114发送一个SYN请求,表示想要连接主机114的40000端口,但是主机114上根本没有打开40000这个端口转载 2017-06-20 22:23:35 · 2072 阅读 · 0 评论 -
发送缓冲区、接受缓冲区、滑动窗口协议之间的关系
一个例子明白发送缓冲区、接受缓冲区、滑动窗口协议之间的关系。在上面的几篇文章中简单介绍了上述几个概念在TCP网络编程中的关系,也对应了几个基本socket系统调用的几个行为,这里再列举一个例子,由于对于每一个TCP的SOCKET来说,都有一个发送缓冲区和接受缓冲区与之对应,所以这里只做单方向交流,不做互动,在recv端不send,在send端不recv。细细揣摩其中的含义。一、re转载 2017-06-20 21:22:34 · 985 阅读 · 0 评论 -
TCP Win=0,Len=0
接受端回应发送端中的win大小表示接受端还能够接受多少数据,发送端下次发送的数据大小不能超过回应中win的大小win大小为0,表示接收端不能够再接受数据。原创 2017-06-20 21:17:32 · 17399 阅读 · 2 评论 -
setsockopt的作用
功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#inc转载 2017-06-28 20:54:41 · 917 阅读 · 0 评论 -
setsockopt 设置socket 详细用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2.如果要已经处于连接状态的soket在调用closesocket后强制关闭,不转载 2017-06-28 20:51:27 · 798 阅读 · 0 评论 -
setsockopt :SO_LINGER 选项设置
TCP连接断开的时候调用closesocket函数,已经讨论过有优雅的断开和强制断开,那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。linger结构体数据结构如下:struct linger{ int l_onoff; /* Linger active */ //低字节,0和非0,用来表示是否延时关转载 2017-06-28 20:37:36 · 622 阅读 · 0 评论 -
TCP/IP Server同一个端口 怎么区分不同socket
多线程情况下,服务器端监听(listen)某个端口后,每accept一个客户端的连接就会产生一个新的Socket新产生的Socket的端口是多少? 答案是服务器端口还是Listen端口。 进程间不能用同一端口,但是进程内部不同Socket可以用同一个端口。 Client端发送给Server同一端口的不同Socket怎么区分。 用Client端Socket端口区分!原创 2017-06-28 20:12:44 · 4814 阅读 · 0 评论 -
查看端口连接数量
netstat -an |find /c ":1431" 比如netstat -ano | find "1415"查出了1415端口的连接情况netstat -ano | find "1415" /c 查询出netstat -ano命令结果中包含"1415"的总数netstat -ano|find /c ":1415 "如果不用:拦头,空格截尾,11415、14151转载 2017-05-05 14:15:49 · 4986 阅读 · 1 评论 -
Linux2.6X内核中文件相关结构体总结
一个进程中各主要的文件相关结构的关系图:下图为多个进程打开同一文件的情况:1.1 struct filestruct file结构体定义在include/Linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例转载 2017-03-24 14:58:00 · 792 阅读 · 0 评论 -
套接字缓存(socket buffer)
Linux网络核心数据结构是套接字缓存(socket buffer),简称skb。它代表一个要发送或处理的报文,并贯穿于整个协议栈。1、 套接字缓存skb由两部分组成:(1) 报文数据:它保存了实际在网络中传输的数据;(2) 管理数据:供内核处理报文的额外数据,这些数据构成了协议之间交换的控制信息。当应用程序向一个socket传输数据之后,该socket将创建转载 2017-03-31 09:35:35 · 7964 阅读 · 0 评论 -
Linux系统结构 详解
Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。1. linux内核 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着转载 2017-03-23 21:52:29 · 20799 阅读 · 0 评论 -
TCP网络编程中的listen
int listen(int fd, int backlog); 有几个概念需要在开头澄清一下TCP socket分两种,监听socket和传输socket两种监听socket:负责处理网络上来的连接请求(客户端的syn包到达便是连接请求来了,如果不知道syn包,请参看一下TCP三次握手);传输socket:负责在网络上的两个端点之间传输TCP数据。 未决socke转载 2017-06-20 22:31:47 · 459 阅读 · 0 评论 -
TCP异常终止(reset报文)
TCP异常终止(reset报文)TCP的异常终止是相对于正常释放TCP连接的过程而言的,我们都知道,TCP连接的建立是通过三次握手完成的,而TCP正常释放连接是通过四次挥手来完成,但是有些情况下,TCP在交互的过程中会出现一些意想不到的情况,导致TCP无法按照正常的四次挥手来释放连接,如果此时不通过其他的方式来释放TCP连接的话,这个TCP连接将会一直存在,占用系统的部分资源。在这种情况下转载 2017-06-20 22:54:23 · 445 阅读 · 0 评论 -
DHCP服务器回复数据包是单播还是广播的争议
二:微软官方解释:默认情况下, Microsoft Windows NT 4.0 DHCP 服务器 发送所有的 DHCP 响应作为 IP 广播到受限广播地址 (255.255.255.255)。 但是,DHCP 服务器 可以将配置为单播响应如果客户端请求指定广播的响应不需要。 DHCP 服务器与 Windows NT 4.0 之前的版本忽略客户端的 DHCP 数据 包中的该广播的标转载 2017-06-20 23:01:03 · 11359 阅读 · 0 评论 -
Linux禁止ping以及开启ping的方法
Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A、内核参数,B、防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping。具体的配置方法如下:内核参数设置1、允许PING设置1)临时允许PING操作的命令为:#echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all2)永久允...转载 2018-10-11 22:08:03 · 4951 阅读 · 0 评论 -
ICMP
原创 2018-10-11 21:56:59 · 1801 阅读 · 0 评论 -
计算机网络基础知识--TCP/IP协议、IP分组、TCP传输
1、OSI参考模型: OSI(Open System Interconnect),即开放式系统互联。一般都称为OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即ISO开放系统互连参考模型。第一层到第三层属于OSI参考模型的低三层,负责创建网络通信连接的...转载 2018-10-11 21:49:51 · 2082 阅读 · 0 评论 -
win10 网络不通
原创 2018-02-26 09:58:07 · 403 阅读 · 0 评论 -
linux 查看SOCKET使用情况
Linux系统中,查看SOCKET使用情况可以使用ss命令。1、命令格式:ss [参数]ss [参数] [过滤]2、命令功能:ss(Socket Statistics的缩写)命令可以用来获取 socket统计信息,此命令输出的结果类似于 netstat输出的内容,但它能显示更多更详细的 TCP连接状态的信息,且比 netstat 更快速高效。它使用了 TCP协议栈中 t转载 2018-01-07 16:06:26 · 20415 阅读 · 0 评论 -
netstat 查看详细端口信息
. 查看Linux系统端口使用情况原创 2018-01-07 16:03:03 · 1838 阅读 · 0 评论 -
Linux Mariadb Socket timeout 分析
* F : FIN - 结束; 结束会话* S : SYN - 同步; 表示开始会话请求* R : RST - 复位;中断一个连接* P : PUSH - 推送; 数据包立即发送* A : ACK - 应答* U : URG - 紧急* E : ECE - 显式拥塞提醒回应* W : CWR - 拥塞窗口减少#cat /proc/sys/net/原创 2017-12-29 16:40:26 · 705 阅读 · 0 评论 -
post 和get的区别
原创 2017-12-24 11:40:50 · 225 阅读 · 0 评论 -
网络栈主要结构介绍(socket、sock、sk_buff,etc)
1、socket(include\linux\Socket.h)该结构体socket 主要使用在BSD socket 层,是最上层的结构,在INET socket 层也会有涉及,但很少。/* * Internal representation of a socket. not all the fields are used by * all configurations: *转载 2017-08-22 11:36:31 · 1351 阅读 · 0 评论 -
Socket套接字状态说明
CLOSED没有使用这个套接字LISTEN套接字正在监听入境连接SYN_SENT套接字正在试图主动建立连接SYN_RECEIVED正在处于连接的初始同步状态ESTABLISHED连接已建立CLOSE_WAIT远程套接字已经关闭:正在等待关闭这个套接字FIN_WAIT_1套接字已关闭,正在关闭连接CLOSING套接字已关闭,远程套接字正在关闭,转载 2017-08-22 11:17:54 · 1749 阅读 · 0 评论 -
netstat 使用方法(一)
1:netstat -ano | find "80"查出了80 端口的连接情况2:netstat -ano | find "80" /c 查询出netstat -ano命令结果中包含"80"的总数3:netstat -ano|find /c ":1415 " 如果不用:拦头,空格截尾,11415、14151这类也会被统计进来的4:netstat -n|find "ESTA原创 2017-08-08 22:48:50 · 3584 阅读 · 0 评论 -
代理ARP
如果ARP请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有代理ARP功能的设备就可以回答该请求,这个过程称作代理ARP(Proxy ARP)。代理ARP功能屏蔽了分离的物理网络这一事实,使用户使用起来,好像在同一个物理网络上。代理ARP分为普通代理ARP和本地代理ARP,二者的应用场景有所区别:1:普通代理ARP的应用环境为:想要互通的转载 2017-07-16 06:47:19 · 7011 阅读 · 0 评论 -
免费ARP
免费ARP免费ARP报文是一种特殊的ARP报文,该报文中携带的发送端IP地址和目标IP地址都是本机IP地址,报文源MAC地址是本机MAC地址,报文的目的MAC地址是广播地址。设备通过对外发送免费ARP报文来实现以下功能:1:确定其它设备的IP地址是否与本机的IP地址冲突。当其它设备收到免费ARP报文后,如果发现报文中的IP地址和自己的IP地址相同,则给发送免费ARP报文的设转载 2017-07-15 17:12:32 · 1341 阅读 · 0 评论 -
ARP(二)
三.ARP协议工作过程:1. 原理:(ARP协议只使用于局域网中)1> 在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。2> 在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地转载 2017-07-15 17:04:59 · 732 阅读 · 0 评论 -
ARP协议详解
1. 什么是ARP? ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。转载 2017-07-15 16:05:18 · 1591 阅读 · 1 评论 -
以太网原理 最大帧长 最小帧长
在传统以太网中,为什么要有最小帧长度和最大帧长度的限制?以太网(IEEE 802.3)帧格式:1、前导码:7字节0x55,一串1、0间隔,用于信号同步2、帧起始定界符:1字节0xD5(10101011),表示一帧开始3、DA(目的MAC):6字节4、SA(源MAC):6字节5、类型/长度:2字节,0~1500保留为长度域值,1536~65535保留为类型域值(0x0600~转载 2017-06-20 23:06:23 · 5664 阅读 · 0 评论 -
Linux的SOCKET编程详解
进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal)UNIX system V有:消息(message)、共享存储区(shared memory)和信号量(semaph转载 2017-03-23 21:37:12 · 5303 阅读 · 0 评论 -
socket原理详解
我们知道进程通信的方法有管道、命名管道、信号、消息队列、共享内存、信号量,这些方法都要求通信的两个进程位于同一个主机。但是如果通信双方不在同一个主机又该如何进行通信呢?在计算机网络中我们就学过了tcp/ip协议族,其实使用tcp/ip协议族就能达到我们想要的效果,如下图(图片来源于《tcp/ip协议详解卷一》第一章1.3)当然,这样做固然是可以的,但是,当我们使用不同的协议进行通信时就转载 2017-03-23 20:22:44 · 1280 阅读 · 0 评论