随笔分类 - 计算机网络
摘要:send()函数 int send( SOCKET s, const char FAR *buf, int len, int flags );不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程...
阅读全文
摘要:在大学的时候学习的计算机网络的具体的知识,也使用过wireshark去抓取一些网络的封包用来分析,但是都没能系统的写一篇博客,今天总结一下吧。wireshark介绍wireshark的官方下载网站:http://www.wireshark.org/wireshark是非常流行的网络封包分析软件,功能...
阅读全文
摘要:写在前面的话2015年12月1日,找导师商量去公司实习的事,说了半天,没有结果。刘备还三顾茅庐呢,继续加油。但是不管结果怎样,都得做好入职前的充足的准备。把项目公司给的任务努力做好,打好基础,即使不能去实习,也要在入职之后尽快的显露自己的能力。记住了:专注的学习知识,这才是重点。谈判能不能成功不是那...
阅读全文
摘要:网络中的链路容量和交换结点中的缓存和处理机都有着工作的极限,当网络的需求超过它们的工作极限时,就出现了拥塞。拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。常用的方法就是1. 慢开始和拥塞避免2. 快重传和快恢复下面分别说一下两种方法:1. 慢开始和拥塞避免发送方维持...
阅读全文
摘要:TCP协议作为一个可靠的面向字节流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。要区分TCP的流量控制和拥塞控制:流量控制是发送方的发送数据的速度不能太快,要考虑到接收方的接收缓冲区的大小,不然数据发送的太快,就可能导致接收方的接收缓冲区数据溢出。...
阅读全文
摘要:按下回车键,当然会产生操作系统的中断响应,产生一个WM_KEYDOWN消息,当然这些都不是计算机网络的东西,这里只讨论计算机网络相关的东西:解析URL浏览器通过URL能够知道下面的信息:Protocol “http”,使用HTTP协议。Resource "/",请求的资源的位置。知道域名是www.g...
阅读全文
摘要:TCP是什么?具体的关于TCP是什么,我不打算详细的说了;当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续。它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功。首先来看看OSI的七层模型:我们需要知道TCP工作在网络OSI的七层模型中的...
阅读全文
摘要:由于socket recv()方法是堵塞式的,当多个客户端连接服务器时,其中一个socket的recv调用时,会产生堵塞,使其他连接不能继续。如果想改变这种一直等下去的焦急状态,可以多线程来实现(不再等待,同时去recv,同时阻塞),每个socket连接使用一个线程,这样效率十分低下,根本不可能应对...
阅读全文
摘要:MAC地址对于每一台设备是全球唯一的,该地址被烧录在网卡的硬件电路上。MAC地址由12位十六进制数表示,其中前6位标识网卡的制造厂商,后6位是网卡的序列号。在以太网中,一个主机要和另一个主机进行通信,必须知道知道目标主机的的MAC地址。什么是ARP,它用来将IP地址映射到MAC地址,以便设备能在多路...
阅读全文
摘要:ICMP经常被认为是IP层的一个组成部分。它携带于IP数据包中,ICMP封装在IP数据包内部:IP首部ICMP数据包下面是一份差错报文的例子:最右边的+或者-代表该报文是查询报文还是错误报文。ICMP的功能介绍:ICMP定义了一套差错报文和查询报文,用于主机与路由器之间交换不可达目的地址、网络拥塞、...
阅读全文
摘要:先把处理的方法的代码放这里:解析数据帧的代码:bool CSocket::findData(byte* buff, int& len){ for (int i = 0; i 0) { memcpy(swapBuff, buff + i + 4 + dataLen + 4, len...
阅读全文
摘要:转载:http://hi.baidu.com/bellgrade/item/4a4334e8132eed0965db00a6函数名与函数指针一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]){MyFun(10);//这里是调用MyFun(10);函数 return 0;}void MyFun(int x) //这里定义一个MyFun函数{ printf(“%d\n”,x);} 这个MyFun函数是一个无返回值的函数,它并
阅读全文
摘要:这篇文章的内容是一个老生常谈的问题----> 函数是如何被调用的。本文用汇编代码研究函数调用的过程,参数调用的方式,函数值的返回。1. 函数是如何实现调用的 函数的调用是用call 和 ret 指令实现的。这里首先简单说明下这call指令的作用:call指令与跳转指令相似,但是不同的是保持返回信息, 即将下一个指令入栈,当遇到ret的时候,返回到这个地址。 呵呵,有点抽象, 下面就用实例来说明,我们写下如下代码: 1 int add(int a, int b) 2 { 3 return a+b; 4 } 5 6 int _tmain(int argc, _TCHAR* argv[]) 7
阅读全文
摘要:转载:http://www.cnblogs.com/clor001/p/3329652.html上篇讲述了内存中的封装模型,下篇我们讲述一下继承和多态。二、继承与多态情况下的内存布局由于继承下的内存布局以及构造过程很多书籍都讲得比较详细,所以这里不细讲。重点讲多态。继承有以下这几种情况:1.单一继承2.多重继承3.重复继承4.虚拟继承1.单一继承的场合假设有以下继承关系,那么大致的内存布局如下代码class Parent{public: int p;};class Child:public Parent{public: int c;};class GrandChild:pu...
阅读全文
摘要:一、封装模型的内存布局常见类对象的成员可能包含以下元素:内建类型、指针、引用、组合对象、虚函数。另一个角度的分类:数据成员:静态、非静态成员函数:静态、非静态、虚函数1.仅包含内建类型的场合:class T{ int data1; char data2; double...
阅读全文
摘要:5.1 指针于地址指针是一种保存变量地址的变量,指针和数组有着密切的练习。标准C中引入void *代表通用指针类型(具体介绍看其他的博文)在学习指针之前,先看我们的内存是如何组织的:通常机器都有一系列连续编号或编址的存储单元,这些存储但愿可以单个进行操作,也可以以连续成组的方式操作。通常机器的一个字节存储单元可以存放一个char类型的数据,两个相邻的字节存储单元可存储一个short类型的数据,而4个相邻的字节存储单元可存储一个long类型的数据。指针是能够存放一个地址的一组存储单元(通常是两个或4个字节)。例如:变量c的类型是char,指针p是指向c的指针变量,则指针变量的声明:int *ip
阅读全文