
网络编程
jadeshu
这个作者很懒,什么都没留下…
展开
-
广播和组播
广播和组播分为两个层面,其中 MAC 层有广播和组播对应的地址,IP 层也有自己的广播地址和组播地址。广播比较简单,MAC 层的广播为 ff:ff:ff:ff:ff:ff,IP 层指向子网的广播地址为主机号为全 1 且有特定子网号的地址。X.X.X.255组播复杂一些,MAC 层中,当地址中最高字节的最低位设置为 1 时,表示该地址是一个组播地址,用十六进制可表示为 01:00:00:00:00:00。IP 层中,组播地址为 D 类 IP 地址,当 IP 地址为组播地址的时候,有一个算法可以计算出对原创 2020-12-06 22:58:23 · 515 阅读 · 0 评论 -
UDP网络编程
一、UDP场景应用:1.网络下载 。选择UDP,因为UDP没有流量限制;2.游戏。选择UDP,需要实时传输,而TCP不能满足,TCP对于数据的确认有延迟ACK;二、UDP编程1.sendto2.recvfrom原创 2020-11-07 22:59:34 · 308 阅读 · 0 评论 -
TCP网络编程
一、网络编程常用八个函数1.int socket(int domain, int type, int protocol); //#include <sys/socket.h>2.int bind(int socket, const struct sockaddr *address,socklen_t address_len); //#include &...原创 2020-11-08 00:47:08 · 222 阅读 · 0 评论 -
同步异步、阻塞和非阻塞、网络模型
同步异步、阻塞和非阻塞是两套概念,容易混淆。同步异步是进程和内核之间阻塞和非阻塞是进程在访问数据时候,根据IO操作的就绪状态来采取的不同方式1.同步和异步 同步和异步是针对应用程序和内核的交互来说的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IP操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,交给OS,而当IO操作完成时会得到IO完成的通知。...原创 2020-04-10 01:53:46 · 564 阅读 · 0 评论 -
幽默的讲解六种Socket I/O模型
很幽默的讲解六种Socket I/O模型本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教。一:select模型二:WSAAsyncSelect模型三:WSAEventSelect模型四:Overlapped I/O 事件通知模型五:Overlapped I/O 完成例程模型六:IOCP模型老陈有一个在外地工作的女儿,不能经常...转载 2019-03-21 13:18:48 · 316 阅读 · 0 评论 -
TCP数据报结构以及三次握手
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。TCP建立连接时要传输三个数据包,俗称三次握手.(Three-way ...转载 2019-03-24 15:21:11 · 360 阅读 · 0 评论 -
TCP四次握手断开连接
建立连接非常重要,它是数据正确传输的前提;断开连接同样重要,它让计算机释放不再使用的资源。如果连接不能正常断开,不仅会造成数据传输错误,还会导致套接字不能关闭,持续占用资源,如果并发量高,服务器压力堪忧。建立连接需要三次握手,断开连接需要四次握手,可以形象的比喻为下面的对话:[Shake 1] 套接字A:“任务处理完毕,我希望断开连接。” [Shake 2] 套接字B:“哦,是吗?请...转载 2019-03-24 15:39:19 · 176 阅读 · 0 评论 -
TCP数据的传输过程
建立连接后,两台主机就可以相互传输数据了。如下图所示:上图给出了主机A分2次(分2个数据包)向主机B传递200字节的过程。首先,主机A通过1个数据包发送100个字节的数据,数据包的 Seq 号设置为 1200。主机B为了确认这一点,向主机A发送 ACK 包,并将 Ack 号设置为 1301。为了保证数据准确到达,目标机器在收到数据包(包括SYN包、FIN包、普通数据包等)包后必须立即回...转载 2019-03-24 15:41:34 · 1080 阅读 · 0 评论 -
TCP/IP协议11种状态
1.l SYN_SENT:这个状态与SYN_RCVD 状态相呼应,当客户端SOCKET执行connect()进行连接时,它首先发送SYN报文,然后随即进入到SYN_SENT 状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT 状态表示客户端已发送SYN报文。2.l LISTEN:表示服务器端的某个SOCKET处于监听状态,可以接受客户端的连接。3.l SY...原创 2019-07-15 02:11:09 · 1035 阅读 · 0 评论 -
网络字节顺序
很少有人关心字节顺序(Byte Ordering),因为它真的很少用到。何为字节顺序呢?让我们先来看一个例子,假设现在有一个WORD类型的变量,它的值为0x7788,那么它在内存中是怎么存放的呢?内存中: 低地址 ...原创 2019-03-21 13:03:48 · 1114 阅读 · 0 评论 -
winsock I/O模型的分析
几种winsock I/O模型的分析套接字是通信的基础,是支持网络协议数据通信的基本接口。Winsocket 提供了一些有趣的I/O模型,有助于应用程序通过一种“异步”方式,一次对一个或者多个套接字上进行的通信加以管理。这些模型包括select(选择)、WSAAsynSelect(异步选择)、WSAEventSelect(事件选择)、Overlapped I/O(重叠 I/O)以及Comp...原创 2019-03-21 12:59:43 · 308 阅读 · 0 评论 -
websocket服务器握手协议
测试网页代码如下<!DOCTYPE html><html><head> <title>测试 websocket 世界最简单案例</title></head><body> <script> var ws = new WebSocket("ws://127.0.原创 2018-03-06 20:05:06 · 1364 阅读 · 0 评论 -
Windows Socket五种I/O模型
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合考虑...转载 2017-03-10 23:20:04 · 277 阅读 · 0 评论 -
HTTP GET的VC三种方式
一.第一种方式(包装类的方式)a.在VC++添加类,选择typelibb.选择文件:C:\Windows\System32\winhttp.dll选择到右边生成的类,最后点完成,即产生了一个CWinhttpRequest类------剩余具体步骤-----------------------------------------//1.初始化COM组件//2.创建组...原创 2017-04-14 18:12:48 · 1169 阅读 · 0 评论 -
OSI七层参考模型
一.OSI七层模型简述二.每层的作用三.数据封装的过程四.数据解封的过程原创 2017-03-06 23:57:33 · 377 阅读 · 0 评论 -
TCP/IP模型
一.定义 全名传输控制协议/网际协议,TransmissionControl Protocol/Internet Protocol。二.概念三.IP地址 IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。互联网上的IP地址统一由一个叫“IANA”(Internet AssignedNumbers Authority,互联原创 2017-03-07 00:09:15 · 419 阅读 · 0 评论 -
WinSock学习笔记
Socket(套接字)◆先看定义:typedef unsigned int u_int;typedef u_int SOCKET;◆Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。◆Socket有五种不同的类型:1、流式套接字(stream socket)定义:#define SOCK_STR...转载 2018-03-06 03:05:19 · 398 阅读 · 0 评论 -
TCP连接图示
转移2018.4.6自己总结绘图原创 2018-04-06 19:30:08 · 717 阅读 · 0 评论 -
websocket发送接收协议
一.websocket接收数据1)固定字节(1000 0001或1000 0010); ---区分是否是数据包的一个固定字节(占1个字节)2)包长度字节,第1位是1, 剩下7为得到一个整数(0,127);125以内的长度直接表示就可以了;126表示后面两个字节表示大小,127表示后面的8个字节是数据的长度;3)mark 掩码为包长之后的 4 个字节4)兄弟数据:得...原创 2018-03-06 21:43:36 · 2797 阅读 · 0 评论 -
send,recv,sendto,recvfrom
send函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;转载 2013-06-05 04:19:03 · 398 阅读 · 0 评论