龙空技术网

别担心,网络编程就是这么简单

使徒行者2020 120

前言:

此刻朋友们对“把十进制数8126转换为二进制数”大致比较讲究,同学们都想要学习一些“把十进制数8126转换为二进制数”的相关知识。那么小编也在网络上收集了一些关于“把十进制数8126转换为二进制数””的相关资讯,希望朋友们能喜欢,看官们快快来学习一下吧!

## 一 外网通信与P2P

生活中,我们普遍使用的网络都是外网通信,像微信、支付宝这些应用,当然也有许多内网的应用(企业内部视频会议,VPN等等),此文暂且不表;

外网通信开发中需要知道外网IP与端口, IP38(一个可以查询IP地址或域名的网站)上可以看到外网IP, 但是如果你是路由器上网, 那么需要作端口映射。

### 1.微信与QQ的通信了解

微信通讯中使用了HTTP短连接和TCP长连接,并没有用到UDP,其中登陆验证和头像身份信息及日志等功能采用的HTTP,文本消息、语音消息、视频消息、图片消息这些使用的是TCP长连接。通过心跳包来维护长连接状态,300S一个心跳 ,微信视频聊天是UDP,信息是TCP。(可以通过随身WIFI,用wireshark抓一下包就知道了)引:

QQ登陆时采用TCP协议和HTTP协议,和好友之间发送消息主要采用UDP协议,内网传文件采用了P2P技术。

1.登陆过程,客户端client 采用TCP协议向服务器server发送信息,HTTP协议下载信息。登陆之后,会有一个TCP连接来保持在线状态。2.和好友发消息,客户端client采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠,采用上层协议来保证可靠传输。如果消息发送失败,客户端会提示消息发送失败,并可重新发送。3.如果是在内网里面的两个客户端传文件,QQ采用的是P2P技术,不需要服务器中转。如果单就QQ用户消息的传递而言:最早年是UDP,而且是P2P的。原因前面很多同学提了。1)P2P的UDP穿透容易。这个应该是主要原因。2)UDP成本低。用过老QQ应该还记得很多时候有消息无法传递到对端的事情。有人还记得当年的QQ可以查看对方的地点吗。就是通过IP转换查询得到的。当然使用UDP并不完美呀。安全问题就很麻烦。现在,如果没记错后面都是TCP的了。而且已经都是C/S架构的了。主要改进的原因还是安全吧。改进的时间应该在06年左右。当然其他很多东西的传输也还有走UDP的。

王者荣耀更新:模仿TCP的UDP协议(腾讯自己封装)

TCP完整通信过程

1.创建套接字socket;2.绑定bind;3.监听listen;

4.对方主动连接connect-接收连接请求accept(会创建新的套接字);

5.使用新的套接字通信send/write-对方revc/read;

6.close

TCP、UDP优缺点比较

UDP占有系统资源少,可能会丢包

TCP是可靠的传输。下载时,telnet时....

UDP是不可靠传输。视频,语音聊天....

### 2.TCP/UDP/HTTP 详解

TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就像HTTP,文件传输协议FTP这样的协议等。TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。记住,需要IP协议来连接网络;TCP是一种允许我们安全传输数据的机制,使用TCP协议来传输数据的HTTP是Web服务器和客户端使用的特殊协议。Socket 接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,用以开发TCP/IP网络上的应用程序。

TCP/IP握手详解:

TCP&UDP几种常见IO模型

1.TCP并发阻塞IO:多线程实现

多进程实现,出现无法连接时有可能端口被占用;

IO多路复用

#### Socket编程(TCP/UDP的API)

通讯步骤(UDP为主 升级到TCP):

①申请socket套接字 skt_fd = socket( AF_INET, SOCK_STREAM, 0);

/*AF_INET:使用IPV4的协议 SOCK_STREAM:使用tcp通信 0:使用标准协议,返回一个针对网络操作钥匙*/

②服务端

/*绑定IP地址结构体和套接字,实现资源初始化*/

rtv = bind(skt_fd, (struct sockaddr *)&skt_addr, sizeof(skt_addr));

{/*监听:设置网络最大同时通信数量:2*/

rtv = listen(skt_fd, 2);

![Paste_Image.png]()

}

客户端

connect连接 rtv = connect(skt_fd, (struct sockaddr *)&skt_addr, sizeof(skt_addr));/*skt_addr是IPV4结构体sockaddr_in对象*/

![Paste_Image.png]()

1.htonl(INADDR_ANY);//登记本机所有网卡

③收rtv = read(clt_fd, buf, sizeof(buf));发rtv=write(skt_fd,buf,sizeof(buf));

sendto(skt_fd, buf, sizeof(buf),0,(struct sockaddr *)&clt_addr, &len );

recvFrom

④关闭close(skt_fd);

bind的端就叫发送端,谁先接收谁绑定bind bind自己的IP 两边都绑定

接收端bind后占用解除 sinsize = 1;

一个套接字建立一个连接,connect只用使用一次 客户端/服务端都一样

收发函数send() recv()

字符串转整数函数:atoi()

四类网络地址(传统32位)-通俗讲解

A:第一字节网络地址 二三四字节主机地址 0开始

B:二 10

C:三 110

D:

一般不用0和255

前三个数第一个不可以是0,其他2个数为0~255任意数,我们就拿最后一个数(也就是Ip二进制后8位)来说吧,可用的IP地址一般不是以0或255结尾,以0结尾的一般表示网络地址,255结尾的是广播地址,也就是说我们用的IP地址是1~254结尾之间的,这其中以1或254结尾的地址常常会用作网关地址,所以我们电脑用的ip后面一般是1~253或2~254之间的数结尾的。

IP地址分类 C类网络号占三段(24位)

IP数据报重组:分片发生在路由上 重组在目的主机 数据包首部包含分片信息

TCP四次握手:SYN建立连接 FIN关闭连接 ACK响应 PSH有DATA数据传输 RST连接重置 首部报文包含内容 URG=1紧急封包

## 动起来

### 1.小项目

上面说了一大堆理论知识,现在让我们来亲手实践一下,用最简单的tcp/ip协议来实现一个简单的局域网通信小程序吧;

### 2.中等实例

带UI多人局域网聊天

### 3.网络服务器

多人群聊

文件传输

在线视频

## 二 联网技术应用及DLNA介绍

使用Platium库开发dlna投屏功能: 里面介绍很好

《智能家庭网络:技术、标准与应用实践》

电脑控制手机:Vysor

## 三 常见的网络开发问题

### 1.C10K(10000 connection)

描述:

解决方案:

### 2.音视频传输

延时 包的大小 图像/视频压缩 内/外网

### 3.并发处理

1.epoll这种可以支持成千上万tcp并发连接

2.udp模拟tcp,udp缺点及优化

3.TCP维持多人同时在线是个问题[1], 涉及到服务器数量,系统调优,编程手段等很多方面

4.QQ UDP丢包重发机制(缓存MTU设置 头部信息 切包 编号 多线程收发)

### 4.多线程与互斥锁(解决并发问题)

![对返回的skt_fd操作即可.png]()

## 常见的网络通信流程(每层对应的硬件有哪些)及通信流程解析

例:QQ->物理层(网卡,厂商提供) 数据链路层(网卡驱动 通信协议)

会话层:登录 加密算法 应用层:QQ界面程序 表示层:解密

路由器 交换机:①网路层(ip协议,路由:数据发送路径[路由协议(算法)用来解决何种效率最高])②数据链路层(安全 效率)路由器国内研发主要方向:优化协议 算法 虚拟网卡->软件代替硬件 什么是AP QOS模式,带双WAN 下载续传

路由表-数据结构,算法算出最高效路径端口号(0-65535,2个字节,16位二进制,实际从1024开始用,之前有大部分有系统用)

即时聊天架构解析(即时通讯网 )

1.登陆过程,客户端client 采用TCP协议向服务器server发送信息,HTTP协议下载信息。登陆之后,会有一个TCP连接来保持在线状态。

2.和好友发消息,客户端client采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠,采用上层协议来保证可靠传输。如果消息发送失败,客户端会提示消息发送失败,并可重新发送。

3.如果是在内网里面的两个客户端传文件,QQ采用的是P2P技术,不需要服务器中转。

## 好书、资料推荐

《C++设计新思维泛型编程与设计模式之应用》

详细的网络IO模式及流程(讲得很详细):

DDos攻击的原理:listen有一个队列,处理连接请求。在收到匿名IP发过来的SYN之后,会在listen队列中存放一个记录,但是队列容量是有限的,当这样的恶意请求过多的时候,listen队列里就塞满了这些无效的连接请求,然后装不下更多的连接记录了,所以就拒绝其他请求

REST是什么?怎么用:

qps和并发:

fastrpc(高性能 c++ 服务器框架, 协程rpc框架):[][]

ACE:

c socket

Http请求与tinyHttpd服务器:

Github:

![【喵叫瘦星人】,一只有温度的寄生兽]()

标签: #把十进制数8126转换为二进制数