
TCPIP
jrunw
这个作者很懒,什么都没留下…
展开
-
TCP状态知识总结(图解)
tcp状态: LISTEN:侦听来自远方的TCP端口的连接请求SYN-SENT:再发送连接请求后等待匹配的连接请求SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认ESTABLISHED:代表一个打开的连接FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认FIN-WAIT-2:从远程TCP等待连接中转载 2017-03-10 14:57:35 · 282 阅读 · 0 评论 -
IP包头详解
IP协议Writed by Vindeselly一、IP包头版本4 bit首部长度4 bit服务类型(TOS)8 bit总长度(字节数)16 bit标识16 bit标志3 bit片偏移13 bit生成时间(TTL)8 bit协议转载 2017-03-29 20:50:17 · 3781 阅读 · 1 评论 -
Linux TCP/IP 协议栈源码分析 - 数据 发送/接收 流程图
http://lib.youkuaiyun.com/article/computernetworks/18626http://www.cnblogs.com/my_life/articles/4691254.html一.linux内核网络栈代码的准备知识 1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操转载 2017-04-18 14:31:28 · 1315 阅读 · 0 评论 -
linux内核中tcp连接的断开处理
我们这次主要来分析相关的两个断开函数close和shotdown以及相关的套接口选项SO_LINGER。这里要注意SO_LINGER对shutdown无任何影响。它只对close起作用。 先来坎SO_LINGER所对应的数据结构: Java代码 struct linger { ///linger的开关 int l_onoff;转载 2017-04-18 17:41:25 · 1181 阅读 · 0 评论 -
socket链接的关闭close和shutdown的区别
TCP主动关闭连接 appl: close(), --> FIN FIN_WAIT_1 //主动关闭socket方,调用close关闭socket,发FIN //对方操作系统的TCP层,给ACK响应。然后给FIN转载 2017-04-21 12:05:37 · 9921 阅读 · 0 评论 -
close和shutdown的区别
转的,没验证close(sock_fd)会把sock_fd的内部计数器减1当sock_fd的内部计数器为0时, 才调用shutodwn(), 并最终释放文件描述符调用shutdown()只是进行了TCP断开, 并没有释放文件描述符本来正常的TCP程序不需要显示调用shutdown()但某些TCP程序十分不友好, 包括著名的firefox早期版本, 给服务器吃CLOSE_WA转载 2017-04-21 13:49:53 · 1048 阅读 · 0 评论 -
LinuxTCP shutdown和close系统调用
作者:henrystark henrystark@126.comBlog: http://henrystark.blog.chinaunix.net/日期:20140419 本文遵循CC协议:署名-非商业性使用-禁止演绎 2.5(https://creativecommons.org/licenses/by-nc-nd/2.5/cn/)。可以自由拷贝,转载。但转载请保持文档的完整性转载 2017-04-21 13:53:59 · 680 阅读 · 0 评论 -
TCP/IP详解--发送ACK和RST的场景
在有以下几种情景,TCP会把ack包发出去:1.收到1个包,启动200ms定时器,等到200ms的定时器到点了(第二个包没来),于是对这个包的确认ack被发送。这叫做“延迟发送”;2.收到1个包,启动200ms定时器,200ms定时器还没到,第二个数据包又来了(两个数据包一个ack);3.收到1个包,启动200ms定时器,还没超时,正好要给对方发点内容。于是对这个包的确认ack就跟着捎转载 2017-04-21 21:38:19 · 14386 阅读 · 0 评论 -
TCP状态机
原创 2017-04-24 17:21:23 · 345 阅读 · 0 评论 -
Linux网络层 ip_rcv()函数代码分析(__pskb_pull_tail)
int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt) //几个结构sk_buff套接字缓存,net_device网络设备结构,是所有网络结构的基础数据结构,packet_type原型struct packet_type { unsigned short type; /*转载 2017-03-03 17:45:23 · 621 阅读 · 0 评论 -
linux TCP/IP协议栈 ---ip_rcv_finish()
static int ip_rcv_finish(struct sk_buff*skb){ const struct iphdr *iph = ip_hdr(skb); struct rtable *rt; /* * Initialise the virtual path cachefor the packet. It des转载 2017-03-03 17:44:32 · 634 阅读 · 0 评论 -
MTU 理解和遇到的一些问题
前几天遇到问题:系统在出现通信时会出现问题,发送端不会报错。但接收端却没有任何反应。MTU详解: 最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据报大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。 因特网协议允许IP分片,这样就可以将数据报分成足够小的片段以通过那些最大传输转载 2017-03-02 14:13:18 · 3801 阅读 · 0 评论 -
TCP的滑动窗口与拥塞窗口
最近在TCP/IP的TCP部分的流量控制与拥塞控制,收集了一些网上的资料,特总结于此。 不管是多么复杂的协议原理,我想首先肯定要落实到协议的字段上面。对于TCP来说流量控制无非是就是在序号和窗口大小上面做文章。因此我们先了解一下16位的窗口大小究竟有什么作用。窗口分为滑动窗口和拥塞窗口。滑动窗口是接受数据端使用的窗口大小,用来告知发送端接收端的缓存大小,以此可以控制转载 2017-03-02 14:17:15 · 486 阅读 · 0 评论 -
TCP的流量控制与拥塞控制的对比
转载网址:http://blog.chinaunix.NET/uid-26548237-id-3966297.html一、TCP的流量控制1、利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控转载 2017-03-02 15:28:45 · 1473 阅读 · 0 评论 -
数据传输过程详解
点击打开链接转载 2017-03-02 16:23:38 · 3302 阅读 · 0 评论 -
TCP/IP 协议栈与数据包封装
点击打开链接转载 2017-03-02 17:32:14 · 331 阅读 · 0 评论 -
数据包接收系列 — IP协议处理流程(一)
原文本文主要内容:在接收数据包时,IP协议的处理流程。内核版本:2.6.37Author:zhangskd @ csdn blog IP报头 IP报头:[java] view plaincopystruct iphdr { #if defined(__LITTLE_ENDIAN_转载 2017-03-02 20:04:44 · 380 阅读 · 0 评论 -
数据包接收系列 — IP协议处理流程(二)
本文主要内容:在接收数据包时,IP协议的处理流程。内核版本:2.6.37Author:zhangskd @ csdn blog 我们接着来看数据包如何发往本地的四层协议。 ip_local_deliver 在ip_local_deliver()中,如果发现数据报有被分片,则进行组装。然后调用NF_INET_LOCAL_IN处的钩转载 2017-03-03 10:28:28 · 385 阅读 · 0 评论 -
TCP/IP数据包格式详解-包括数据链路层的头部
最近在进行一些路由软件的编程,发现自己对数据报格式并不是十分清楚,所以就查阅了相关资料,总结如下,供大家参考,也可以称为自己日后的工具。图中括号中的数字代表的是当前域所占的空间大小,单位是bit位。黄色的是数据链路层的头部,一共14字节绿色的部分是IP头部,一般是20字节紫色部分是TCP头部,一般是20字节最内部的是数据包内容黄色部分:链路层目的MAC:转载 2017-02-24 11:23:13 · 2050 阅读 · 0 评论 -
TCP拥塞控制,慢启动算法
当一个网络面对的负载超过了它的处理能力时,拥塞就会发生。Internet也不例外。理论上,通过使用一条从物理学中套用过来的法则:分组守恒法则,拥塞现象就可以得到控制。它的基本思想是,只有当一个老的分组离开之后才允许向网络注入一个新的分组。TCP企图通过动态的维护窗口的大小来实现这个目标。管理拥塞的第一步是检测用色。在过去,检测拥塞是非常困难的。由于丢失分组而引起的超时可能有两种情况:(1)转载 2017-02-24 11:33:55 · 5808 阅读 · 0 评论 -
Linux发送函数dev_queue_xmit分析
当上层准备好一个包之后,交给下面这个函数处理[cpp] view plaincopyprint?int dev_queue_xmit(struct sk_buff *skb) { struct net_device *dev = skb->dev; struct netdev_queue *txq; struct Qdis转载 2017-03-03 17:42:52 · 1494 阅读 · 0 评论 -
MTU 和 MSS
今天利用windows查找功能对网络上的一个共享文件夹里的内容 进行查找,发现查找网络文件时流量巨大。好奇用wireshark抓包发现 wireshark Info栏里有很多“TCP segment of a reassembled PDU”提示信息。不解百度了一下发现大家都在询问这个问题网上并没有很好的解答。想到“TCP segment of a reassembled PDU”只是wiresh转载 2017-03-02 14:04:24 · 289 阅读 · 0 评论