
linux tcp/ip
JDSH0224
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linuxsocket阻塞recv怎么返回
如果socket是被对方用linger为0的形式关掉,也就是直接发RST的方式关闭的时候,recv也会返回错误,错误码是ENOENT还有一种经常在代码中常见的错误码,那就是EINTER,意思是系统在接收的时候因为收到其他中断信号而被迫返回,不算socket故障,应该继续接收。recv是socket编程中最常用的函数之一,在阻塞状态的recv有时候会返回不同的值,而对于错误值也有相应的错误码,分别对应不同的状态,下面是我针对常见的几种网络状态的简单总结。原创 2024-02-24 10:25:54 · 638 阅读 · 0 评论 -
linux TIME_WAIT时间变短
默认情况下,TIME_WAIT状态会持续2分钟(120秒)以确保网络上没有重复的数据包被传输到错误的目标地址。这样就将TIME_WAIT超时时间从默认的60秒调整为了30秒。需要注意的是,此修改只对新建立的连接生效,不影响正在进行的连接。无论选择哪种方法,都需要小心操作,因为缩短TIME_WAIT时间可能导致部分连接处于非正常状态或者引发其他网络相关问题。要将TIME_WAIT时间设置为更短的值,可以通过修改系统内核参数来实现。同样,这也会将TIME_WAIT超时时间设置为30秒。原创 2024-01-11 09:00:22 · 1678 阅读 · 0 评论 -
TCP/IP基础知识
1. 三次握手2.四次挥手3.数据通信原创 2022-02-20 22:53:27 · 1092 阅读 · 0 评论 -
route add添加路由
原创 2021-03-13 16:54:52 · 3746 阅读 · 0 评论 -
linux iptabes
详见:http://www.zsythink.net/archives/tag/iptables/page/2/原创 2020-03-05 09:36:17 · 245 阅读 · 0 评论 -
网络访问层体系
网络访问层包括如下一些体系:[插图]IEEE 802.3(以太网):在大多数办公室和家庭使用的基于线缆的网络。[插图]IEEE 802.11(无线网络):在办公室、家庭和咖啡厅使用的无线网络技术。[插图]IEEE 802.16(WiMAX):用于移动通信长距离无线连接的技术。[插图]点到点协议(PPP):Modem通过电话线进行连接的技术。 ...原创 2018-12-09 23:21:44 · 254 阅读 · 0 评论 -
ARP/RARP功能
经过局域网传递的数据帧必须使用这个物理地址来标识源适配器和目的适配器,但冗长的物理地址(以太网使用48比特地址)的可用性非常差。但是,在较高的协议层对物理地址进行编码又会破坏 TCP/IP 模块化带来的灵活性,因为后者要求上层协议与物理细节无关。TCP/IP使用地址解析协议(ARP)和逆向地址解析协议(RARP)把IP地址关联到网络适配器的物理地址。ARP和RARP为用户提供的逻...原创 2018-12-09 23:19:38 · 1617 阅读 · 0 评论 -
linux TCP IP 协议三次握手分析,客户端connect() 、客户端服务端接收流程图分析,tcp_rcv_state_process
1. tcp/ip三次握手协议a. 客户端发送SYN段b. 服务端接收到SYN段后, 发送SYN/ACK段c. 客户端回复确认ACK段, 服务端收到ACK段关于三次握手协议的具体分析详见:tcp三次握手协议分析 2. tcp ip协议connect 流程(发送流程与此类似)3. tcp ip协议栈接收流程特别要注意 tcp_rcv_state_process()...原创 2018-09-20 23:19:15 · 1249 阅读 · 0 评论 -
linux路由表之route
1. 前言https://blog.youkuaiyun.com/vevenlcf/article/details/48026965描述了主机路由和网络路由的区别:https://blog.youkuaiyun.com/buhuiguowang/article/details/81026050 2. route 命令参数mike@ubuntu:~/workspace/DCU-LEDE$ man rout...原创 2018-09-14 23:47:19 · 2397 阅读 · 0 评论 -
tcp_parse_options()源码分析
关于tcp options详解见:tcp options详解源码分析:void tcp_parse_options(const struct sk_buff *skb, struct tcp_options_received *opt_rx, int estab, struct tcp_fastopen_cookie *foc){ const ...原创 2018-09-23 22:06:29 · 985 阅读 · 0 评论 -
linux 路由表之ifconfig
1. 前言 本博客主要分析在应用层使用ifconfig命令时所引发的系统调用、及内核路由表中的地址添加流程。 FIB: forward information base, fib_info结构体2. ifconfig命令在应用层使用命令:ifconfig eth0 192.168.1.100 up 配置本地ip地址时将调用busybox源码中的ifconfig.c,...原创 2018-09-09 01:20:39 · 1942 阅读 · 0 评论 -
linux 路由缓存rt_hash_table和路由表fib_table_hash(LC-Trie)
路由缓存和路由表分析:https://blog.youkuaiyun.com/shichaog/article/details/44658205路由表算法LC-Trie:https://blog.youkuaiyun.com/u014211079/article/details/40584721路由表再议:https://blog.youkuaiyun.com/qy532846454/article/details/7568...原创 2018-08-19 13:58:22 · 969 阅读 · 0 评论 -
路由和网关的区别
TCP/IP网络是由网关(Gateways)或路由器(Routers)连接的。当IP准备发送一个包的时候,它把本地(源)IP地址和包的目的地址插入IP头,并且检查目的地网络ID是否和源主机的网络ID一致,如果一致,包就被直接发送到本地网的目的计算机,如果不一致,就检查路由表中的静态路由,如果没有发现路由信息,包就被转送到缺省网关。 缺省网关连接到本地子网和其它网络的计算机,它知道...原创 2018-08-19 11:04:19 · 11926 阅读 · 0 评论 -
IP地址分类、子网掩码、子网地址、网络地址、主机地址
1. IP地址构成 IP地址=网络地址+主机地址,或IP地址=网络地址+子网地址+主机地址。2. IP地址类型 2.1 A类IP地址 由1个字节的网络地址+3个字节的主机地址组成,网络地址的最高位必须为0,地址范围从1.0.0.0~126.0.0.0,即可用的A类网络为126个,每个网络地址可容纳主机地址有1亿多个主机。 2.2 B类IP地址 ...2018-12-15 23:24:01 · 1781 阅读 · 0 评论 -
如何添加静态的主机、网络路由
1. 查看IP//查看本机地址[root@mike /]#ifconfigeth0 Link encap:Ethernet HWaddr 36:65:12:08:47:70 inet addr:192.168.1.200 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RU...原创 2018-12-27 15:18:50 · 699 阅读 · 0 评论 -
socket 服务端类模块封装
1. Server.h#ifndef SOCKET_SERVER_H#define SOCKET_SERVER_H#include <stdio.h>#include <stdlib.h>#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#i...原创 2019-07-23 19:49:34 · 347 阅读 · 0 评论 -
nat命令
PC主机IP: 192.168.1.100开发板IP: 192.168.1.200开发板上容器的IP: 192.168.100.3#删除规则表 dnat1nft delete table dnat1 #增加规则表 dnat1nft add table dnat1 #在表dnat1中增加一条链 prerouting [SNAT]nft add chain dnat1 prer...原创 2019-04-12 16:30:21 · 1742 阅读 · 0 评论 -
tcpdump
TSval是本端填写的时间戳,TSecr是回显给对端的时间戳。两端必须都分别在SYN包和SYN|ACK包中开启时间戳选项,时间戳功能才能生效。1. tcpdump相关操作1.1. 绑定相应的网络接口设备 tcpdump -i eth0 1.2. 通过端口抓包 tcpdump tcp port 9132 1.3. 通过目的端口抓包 tcpdump t...原创 2018-12-18 16:43:44 · 1052 阅读 · 0 评论 -
TCP/IP三次握手、四次挥手
1. TCP 6种标识位 1.1 SYN(synchronous)建立连接,只在刚开始的三次握手才会出现这个标识 1.2 ACK(acknowledgment)确认 1.3 PSH(push)传送 1.4 FIN(finish)结束,只在关闭socket通讯时才会出现这个标识 1.5 RST(reset)重置 1.6 URG(urgent)紧急...原创 2018-12-17 23:22:15 · 204 阅读 · 0 评论 -
NAT(网络地址转换)
一些比较专业的用户会注意到,如果 DHCP 服务器为客户端提供了一个 IP 地址,那么这个地址可能不是一个“公共的”、在Internet上唯一的IP地址。只要路由器自己具有在Internet上有效的IP地址,那么路由器就可以成为网络客户端的代理,从客户端接收请求,向Internet地址空间转发这个请求,进而接收来自于Internet地址空间的响应。许多路由器/DHCP设备都可以提供名...原创 2018-12-22 21:52:10 · 4914 阅读 · 0 评论 -
DHCP
一、定义DHCP:动态主机配置协议,用于提供动态IP地址分配的协议。DHCP客户端:通过DHCP来接收动态IP地址的计算机。DHCP服务器:通过DHCP将TCP/IP配置参数传输给客户端计算机的一台计算机。二、DHCP如何工作从DHCP服务器中租用IP地址的过程需要经过4个步骤:1.DHCPDISCOVER:DHCP客户端首先会向UPD端口687(BOOTP和DHCP服务器...原创 2018-12-22 21:46:24 · 213 阅读 · 0 评论 -
linux查询路由表local、路由表main、路由表default
转发:https://blog.youkuaiyun.com/u011068702/article/details/53899537 在 Linux 系统启动时,内核会为路由策略数据库配置三条缺省的规则: 0 匹配任何条件 查询路由表local(ID 255) 路由表local是一个特殊的路由表,包含对于本地和广播地址的高优先级控制路由。rule 0非常特殊,不能被删除或者覆盖。 32766 ...原创 2018-12-27 15:21:15 · 7620 阅读 · 0 评论 -
TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系
MSS(Maxitum Segment Size 最大分段尺寸)是TCP一次能够传输的数据(不包括协议头的开销)的最大值, 当然还有一个概念是MTU,这个在更底层了,说明了在物理上信道支持的最大数据量,因此,MSS应该比MTU小,正常情况下,MSS=MTU-IP包头长-TCP包头长~~~~----------------------------------------------------...原创 2018-08-13 23:40:37 · 315 阅读 · 0 评论 -
Linux路由缓存实现浅析rt_hash_table
最近闲赋在家,在家里做了一个双ADSL负载均衡的东东,不过遗憾的是,流量始终在一条线路上,本着解决问题的态度,把Linux的路由缓存子系统看了一下,现在把笔记发上来。原来好像也发过一篇,不过是老版本内核的,本贴对应的版本是2.6.31。不保证内容都正确,仅供讨论学习之用。转载请注明作者和出处。一、什么是路由缓存路由查询IP层最重要的工作,同时,它也是一件很耗时的工作,为了提高路由查询的效...转载 2018-08-13 17:57:18 · 1580 阅读 · 0 评论 -
linux 服务器端listen(5)
1. 前言原创 2018-07-01 17:05:42 · 2205 阅读 · 0 评论 -
inet_csk_get_port(...)
1. tcp协议内部绑定tcp_hashinfostruct proto tcp_prot = { .name = "TCP", .owner = THIS_MODULE, .close = tcp_close, .connect = tcp_v4_connect, .disconnect = tcp_disconnect, .accept = inet_csk_a...原创 2018-07-01 00:21:37 · 1379 阅读 · 0 评论 -
linux 服务器、客户端socket(3)
本篇博客主要记录socket创建是的流程,其它socket接口API详见:点击打开链接1. 应用层创建socket套接字int socket(int domain, int type, int protocol);参数说明:domain:协议域,又称协议族(family)。常用的协议族有AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIX,Unix域Socket)、AF_ROUT...原创 2018-06-18 18:01:11 · 649 阅读 · 1 评论 -
tcp/ip协议栈的数据结构(2)
原创 2018-06-17 16:08:31 · 805 阅读 · 0 评论 -
linux tcp ip协议栈学习路线图(1)
即将开启tcp/ip协议栈的学习,本篇博客主要是针对接下来即将分析的协议栈目录。1. tcp/ip协议栈的数据结构:详见2. inet_init()初始化,详见:点击打开链接3. socket()通信流程基于TCP(面向连接)的socket编程,分为客户端和服务器端。客户端的流程如下:(1)创建套接字(socket)(2)向服务器发出连接请求(connect)(3)和服务器端进行通信(send/r...原创 2018-06-17 16:06:02 · 1641 阅读 · 0 评论 -
ARP(地址解析协议)
数据链路层的第一道关卡是MAC地址,但基于TCP/IP的网络主要使用IP地址来标识主机而不使用MAC地址。比如要连接到别人的电脑或拷贝共享文件,一般会说:“告诉我你电脑的IP”,而不是“告诉我你电脑的MAC”。从以太网帧结构知道,不知道对方网卡的MAC地址是无法正常通讯的,那主机是怎样从IP地址上自动获取到MAC地址呢?这就是这章要讲的“地址解析协议”,以下简称其英文缩写“ARP”。...原创 2018-06-12 17:39:42 · 367 阅读 · 0 评论 -
socket关闭之close()和shutdown()的差异
对于一个tcp连接,在c语言里一般有2种方法可以将其关闭:close(sock_fd);// 或者shutdown(sock_fd, ...);123多数情况下这2个方法的效果没有区别,可以互换使用。除了:close() 是针对file的操作shutdown() 是针对socket的操作unix系统里socket是一个文件,但文件不一定是一个socket;所以在进入系统调用后和达到协议层前(发...转载 2018-06-12 09:21:00 · 2365 阅读 · 0 评论 -
linux getsockname和getpeername使用
getsockname和getpeername函数getsockname函数用于获取与某个套接字关联的本地协议地址 getpeername函数用于获取与某个套接字关联的外地协议地址定义如下:[cpp] view plain copy#include<sys/socket.h> int getsockname(int sockfd, struct sockaddr *localad...原创 2018-06-04 23:31:11 · 5417 阅读 · 1 评论 -
linux socketpair
1. 用途 套接字可以用于网络通信,也可以用于本机内的进程通信。由于本机内进程的IP地址都相同,因此只需要进程号来确定通信的双方。非网络通信套接字在Linux环境中的应用很多,最典型的就是Linux的桌面系统——Xserver,其就是使用非网络套接字的方法进行进程之间的通信的。2. 用例源码:#include <sys/types.h> #include <sy...原创 2018-06-04 22:59:25 · 410 阅读 · 0 评论 -
linux inet_init
一. 前言原创 2018-05-15 23:07:21 · 1726 阅读 · 0 评论 -
linux 服务器端bind(4)
1. 前言 上一篇博客主要记录了socket创建的流程,详见点击打开链接,本篇博客主要记录linux服务器端套接字创建成功后,需通过bind绑定一个本地地址和端口的工作流程。百科注解: 将一本地地址与一套接口捆绑。本函数适用于未连接的数据报或流类套接口,在connect()或listen()调用前使用。当用socket()创建套接口后,它便存在于一个名字空间(地址族)中,...原创 2018-06-19 23:45:07 · 871 阅读 · 0 评论 -
linux 内核 current全局变量
task_struct内核路径:include/linux/sched.hstruct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; atomic_t usage; unsigned int flags; /* per process flags,...原创 2018-06-20 08:58:45 · 15300 阅读 · 2 评论 -
SmartSniff 过滤器的规则
SmartSniff 过滤器的规则[include|exclude] : [local|remote|both] : [tcp|udp|tcpudp|icmp|all] : [IP Range|Ports Range][显示|排除] : [本地|远程|双向] : [tcp|udp|tcpudp|icmp|all] : [ip地址范围|端口范围]例如在菜单:options->Displa...转载 2018-08-06 14:02:22 · 2138 阅读 · 0 评论 -
MAC地址 单播,组播,广播
今天调试了一个程序,我把板子的MAC地址随便设置为MCU的全球唯一码了,怎么也调试不通,最后更换了MAC地址之后莫名其妙通了; 弄好之后,“百思不得其解”,应网上浏览了一下MAC地址相关的资料,才恍然大悟,原来MAC地址也分组播,广播地址,广播地址为全1 即FF.FF.FF.FF.FF.FF这个比较常见,ARP就是使用MAC广播地址的,但还有一个组播MAC地址,这个不常用(我也不知道什么情...转载 2018-07-31 23:58:34 · 781 阅读 · 0 评论 -
Mac头、IP头、TCP头、UDP头详解以及定义
一、MAC帧头定义/*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{ char m_cDstMacAddress[6]; //目的mac地址 char m_cSrcMacAddress[6]; //源mac地址 short m_cType; //上一层协议类型,如0x0800代表上一层是IP...原创 2018-07-31 23:45:23 · 14685 阅读 · 1 评论 -
VMware WorkStation的三种网络连接方式
版权声明:对于本博客所有原创文章,允许个人、教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者、出处及本声明。 博客地址:http://blog.youkuaiyun.com/shuxiao9058 原始作者:季亚一. 首先贴出本人在网络上找到与VMware网络连接相关的知识 安装完虚拟机后,默认安装了两个虚拟网卡,VMnet1和V...转载 2018-08-04 12:01:18 · 585 阅读 · 0 评论