自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 TPC的流量控制和阻塞控制

TPC的流量控制和阻塞控制滑动窗口介绍将TCP与UDP这样的简单传输协议区分开来的是它传输数据的质量。TCP对于发送数据进行跟踪,这种数据管理需要协议有以下两大关键功能:可靠性: 保证数据确实到达目的地。如果未到达,能够发现并重传。 数据流控: 管理数据的发送速率,以使接收设备不致于过载。 要完成这些任务,整个协议操作是围绕滑动窗口确认机制来进行的。因此,理解了滑动

2018-01-18 19:04:53 2056

转载 cap包解析

windows下的wireshark和Linux下的tcpdump所抓的包为同样的CAP文件的格式,sniffer软件所抓的包文件扩展名也是.cap,但格式却不太一样。本文主要说明ethereal和tcpdump抓包产生的.cap文件的格式。    其实,要获得PCAP文件的格式,除了直接打开.cap文件来分析外,可以看WinPcap包或Linux下/usr/include下的pcap.h

2018-03-01 15:42:23 2495

原创 获取交换机和PC网卡接口对应关系

在机房连线的时候通常需要知道交换机的接口和pc端的网卡接口之间的对应关系,当然最直接的办法是通过IDC运维人工判断,贴标签等,但是这显然不是比较可取的方法 其实通过LLDP协议我们就可以解决这个问题。 首先我们创建一个sock,那么这个sock收上来的LLDP数据中肯定包括了交换机接口相关的信息,那么我们只需要判断这个报文是从哪一个接口收上来那么就可以得到一个对应关系了。 SOCK_RAW原始套接字

2018-02-28 16:48:50 2224

翻译 进程,线程,协程

并发和并行并发并发是指运行的程序以我们不知道的顺序进行,比如A程序输出(1,2,3),B程序输出(4,5,6),我们先后运行A,B两个程序发现输出的顺序并不是1,2,3,4,5,6而是以打乱的顺序输出的,那我们就可以说这两个程序是并发执行的。但是在某一个时间点,只有一个程序在运行。并行那么什么是并行呢,并行和并发有一点相似,但是他是真正的在某一时间点有两个程序在同时运行,那

2018-01-26 15:46:14 332

原创 golang系列----接口使用技巧(interface)

golang中的interface是什么Go不是一种传统的面向对象的语言,它在语法上不支持类和继承的概念,而interface就是让它在效果上实现了类似于C++的“多态”概念。 由于本篇文章主要是讲interface使用的一些小技巧所以不对接口做过多的解释,有兴趣的可以参考:什么是接口

2018-01-15 20:13:14 2654

原创 NAT转换过程中会存在的问题

MSS和MTU问题MTU(maximum transmission unit)最大传输单元,由硬件规定,如以太网的MTU为1500字节。一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。MSS:max

2018-01-15 18:55:41 1752

转载 TCP连接探测中的Keepalive和心跳包

1. TCP保活的必要性1) 很多防火墙等对于空闲socket自动关闭2) 对于非正常断开, 服务器并不能检测到. 为了回收资源, 必须提供一种检测机制.2. 导致TCP断连的因素如果网络正常, socket也通过close操作来进行优雅的关闭, 那么一切完美. 可是有很多情况, 比如网线故障, 客户端一侧突然断电或者崩溃等等, 这些情况server并不

2018-01-03 14:12:43 444

转载 关于使用UDP(TCP)跨局域网,NAT穿透的心得

前言:       最近我用java做了一个C/S的类似QQ之类的IM系统(即时通讯系统),遇到了不能跨局域网通讯的问题,经过在网上,和书上查阅了一些资料,了解了一些情况,现在就总结一下我的解决方案吧(本人也是在不断错误中学习,如果有什么不对的地方,请大家多多指教)。问题描述:         一般情况下,只能在同一个子网即同一个虚拟局网里通讯,或者子网访问外网,外网访问不了内

2017-11-20 17:56:38 1359

转载 以太网数据的封装

以太网数据格式与封装解封      我们在上一文中介绍了以太网5层模型,这一节我想学习一下以太网数据封装与解封的知识,了解以太网数据是如何传输的。一、数据封装      当我们应用程序用TCP传输数据的时候,数据被送入协议栈中,然后逐个通过每一层,知道最后到物理层数据转换成比特流,送入网络。而再这个过程中,每一层都会对要发送的数据加一些首部信息。整个过程如下图。

2017-11-09 19:56:42 4654 1

转载 Wireshark基本介绍

原文链接阅读目录wireshark介绍wireshark不能做的wireshark VS Fiddler同类的其他工具什么人会用到wiresharkwireshark 开始抓包wireshark 窗口介绍wireshark 显示过滤保存过滤过滤表达式封包列表(Packet List Pane)封包详细信息 (Packet Details Pane)wireshark与对应的

2017-11-09 16:48:04 707

原创 TCP,UDP报文详解

TCP报文介绍  TCP是一种可靠的、面向连接的字节流服务。   源主机在传送数据前需要先和目标主机建立连接。然后,在此连接上,被编号的数据段按序收发。同时,要求对每个数据段进行确认,保证了可靠性。如果在指定的时间内没有收到目标主机对所发数据段的确认,源主机将再次发送该数据段。TCP报文结构TCP头部他的标准长度是20字节。除非出现选项,头部字段以32位为单位给出头部大小(最小值是5)。 源端口

2017-11-08 20:08:33 12508

原创 ip报文

ip报文 IP协议是TCP/IP协议中的核心协议。所有TCP,UDP,ICMP,IGMP数据都通过IP数据报传输,但是IP不保证能够到达目的地址,并且IP不保证到达的顺序,所以需要上层的协议(通常是TCP)来处理这些潜在的问题,以便为应用提供无差错的交付。IP报头 )版本:占4位(bit),指IP协议的版本号。目前的主要版本为IPV4,即第4版本号,也有一些教育网和科研机构在使用IPV6。在进行通

2017-11-08 20:07:21 538

原创 IP,TCP,UDP,ICMP校验和的区别和计算

IP校验和的计算IP数据报的校验和只检验IP数据报的首部。当发送IP包时,需要计算IP报头的校验和:把校验和字段置为0;对IP头部中的每16bit进行二进制求和;如果和的高16bit不为0,则将和的高16bit和低16bit反复相加,直到和的高16bit为0,从而获得一个16bit的值;将该16bit的值取反,存入校验和字段。当接收IP包时,需要对报头进行确认,检查IP头是否有误,算法同上

2017-11-08 19:28:47 5243 1

转载 计算UDP/TCP检验和checksum

如何计算UDP/TCP检验和checksum一、下面的图是一个UDP的检验和所需要用到的所有信息,包括三个部分:1.UDP伪首部2.UDP首部3.UDP的数据部分(切记不要遗漏该部分,否则就~吐血了~)首先解释下伪首部的概念,伪首部包含IP首部一些字段。其目的是让UDP两次检查数据是否已经正确到达目的地,只是单纯为了做校验用的。还有一个概念十分重要,那就是1

2017-11-07 15:32:03 2978

原创 http协议详解

http协议详解http的主要特点支持客户/服务器模式简单快速,客户向服务器请求服务的时候,只需要传送请求方法,常用的请求方法有GET,HEAD,POST.每个方法规定了客户与服务器的类型不同。由于http协议很简单,使得http服务的程序规模小,因而通信速度很快灵活,http允许传输类型的数据对象,正在传输的类型又,Content-Type加以标记。无连接,限制每次连接只处理一个请求,服务

2017-11-06 10:38:08 376

原创 py列表函数

列表的函数把一个元素添加到列表的结尾:list.append(x)把一个给定列表的所有元素都添加到另一个列表中:list.extend(L)在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引:list.insert(i,x)删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误:list.remove(x)从列表的指定位置删除元

2015-07-01 22:46:14 1317

原创 flask安装笔记

网上找了很多安装flask的方法可惜废话太多,真是蛋疼,不过最后还是搞好了,简单的说一些,省去一些废话,直接开搞(我的系统是ubuntu的)1.sudo apt-get install openssh-server2.dpkg --list|grep ssh3.sudo passwd4.python --version5.sudo apt-get install python-

2015-07-01 20:52:38 526

转载 HDU分类

第一篇    1001 这个就不用说了吧1002 简单的大数1003 DP经典问题,最大连续子段和1004 简单题1005 找规律(循环点)1006 感觉有点BT的题,我到现在还没过1007 经典问题,最近点对问题,用分治1008 简单题1009 贪心1010 搜索题,剪枝很关键1011 1012 简单题1013 简单题(有个小陷阱)1014

2015-06-15 23:45:44 536

原创 poj2186

题意:给出一个有向图,求一共有多少个点,满足这样的条件,所有其它的点都可以到达这个点。分析:强连通分支+缩点,然后统计每个强连通分支的出度,如果只有一个为0,则输出其内部点的个数,如果有多个为0,说明没有答案。就是最基本的强连通模板而已#include#include#include#includeusing namespace std;const int MAX_N=500

2015-06-07 20:47:14 375

原创 2-SAT问题

2-SAT问题利用强连通分量分解,可以在布尔公式句数的线段时间内解决2-SAT问题,首先利用=>(蕴含)将每个子句(AvB)改写为等价形式(非A=>B)^(A=>非 B)这样对每个布尔变量x构造两个顶点分别代表X和非x,以=>关系为边建立有向图,此时,如果图上的a点能够达到b点的话,就表示a为真时b一定为真.因此,该图中同一个强连通分量所含的所有文字的布尔值均相同.如果存在非x和x在同

2015-06-07 20:38:11 550

原创 强连通分量分解

强连通分量分解可以通过两次简单的DFS实现.第一次DFS时,选取任意顶点作为起点,遍历所有未访问的顶点,并在回溯时给顶点标号,对于剩余未访问的顶点不断重复上过程.完成标号后,越接近图的尾部的,顶点标号越小,第二次DFS时,先将所有的边反向,然后以标号最大的顶点为起点进行DFS.这样DFS所遍历的顶点集合就构成了一个强连通分量,之后只要还有尚未访问的顶点,就从中选取标号最大的顶点不断重复上面过程

2015-06-07 20:35:29 1128

原创 hud1295

题目意思,有一个长方形的广告展板,长宽分别为h,w,每次贴广告总会优先选取最上面的一行并且最靠左边的地方,但是保证不能把别人贴的广告盖住,每张广告的宽都为1,长为x,求出贴广告所在行数.分析:可以把展板的高作为线段树的子叶,展板的长作为是否能贴广告判断的依据,如果所有行中剩下空位最大的还比x小,,那么说明没有为之刻意贴,则输出-1;反之求出能贴广告最靠近上面的行数;#include#

2015-05-31 16:43:08 413

原创 hdu1394

#includeusing namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int maxn=5005;int sum[maxn<<2];void pushup(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void build(int l,int

2015-05-30 20:56:37 337

原创 hdu1166

简单的线段树入门点更新求区间和#include#include#includeusing namespace std;const int maxn=50005;int sum[maxn<<2];#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1void pushup(int rt){ sum[rt]=sum[rt<

2015-05-30 19:49:16 404

原创 hdu1166

简单的线段树入门点更新求区间和#include#include#includeusing namespace std;const int maxn=50005;int sum[maxn<<2];#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1void pushup(int rt){ sum[rt]=sum[rt<<1

2015-05-30 19:49:01 301

原创 hdu1754

简单的区间段的点更新求区间中的最大值简单的线段树入门#include#include#include#includeusing namespace std;const int maxn=200005;int MAX[maxn<<2];#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1void pushup(int rt){

2015-05-30 15:10:53 341

原创 UBUNTU软件出现崩溃的问题

ubuntu 下面问题记录:一、安装好来ubuntu 桌面系统后首次使用正常,但是关机以后第二次进入后,点击软件中心时,显示软件中心崩溃。网上找了下别人的解决方法:1、提示说是lists出错 我的正是这种情况使用如下命令可以修复:1、删除lists sudo rm /var/lib/apt/lists/* -vf2、重新下载 sudo apt-g

2015-05-29 23:01:19 791

转载 Vim简明教程【CoolShell】

vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类

2015-05-04 15:29:29 425

原创 最小生成树问题(Kruskal算法)

给定一个无向图,如果他的某个子图中的任意两个顶点都是连同的并且是一棵树,那么这棵树就叫生成树(Spanning Tree),如果边上有权值,那么使得边权和最小的生成树叫做最小生成树.首先我们假设有一棵树只包含一个顶点v的树T.然后贪心的取T和其他定点之间连接的最小权值的边,并把它加入到T中.不断进行这个操作,既可以得到一颗生成树了#include#includeusing name

2015-05-04 15:12:25 730

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除