Http请求与tinyHttpd服务器
http://www.cnblogs.com/qiyeboy/p/6296387.html
IP地址分类 C类网络号占三段(24位)
IP数据报重组:分片发生在路由上 重组在目的主机 数据包首部包含分片信息
TCP四次握手:SYN建立连接 FIN关闭连接 ACK响应 PSH有DATA数据传输 RST连接重置 首部报文包含内容 URG=1紧急封包
即时通讯网 http://www.52im.net/thread-33-1-1.html 做一款个人QQ
Socket编程
通讯步骤(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);
}
客户端
connect连接 rtv = connect(skt_fd, (struct sockaddr )&skt_addr, sizeof(skt_addr));/skt_addr是IPV4结构体sockaddr_in对象*/
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);
一个套接字建立一个连接,connect只用使用一次 客户端/服务端都一样
收发函数send() recv()
字符串转整数函数:atoi()
多线程与互斥锁
对返回的skt_fd操作即可.png音视频传输
延时 包的大小 图像/视频压缩 内/外网
握手
并发处理
1.epoll这种可以支持成千上万tcp并发连接
2.udp模拟tcp
3.TCP维持多人同时在线是个问题[1], 涉及到服务器数量,系统调优,编程手段等很多方面
4.QQ UDP丢包重发机制(缓存MTU设置 头部信息 切包 编号 多线程收发)
即时聊天架构
1.登陆过程,客户端client 采用TCP协议向服务器server发送信息,HTTP协议下载信息。登陆之后,会有一个TCP连接来保持在线状态。
2.和好友发消息,客户端client采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠,采用上层协议来保证可靠传输。如果消息发送失败,客户端会提示消息发送失败,并可重新发送。
3.如果是在内网里面的两个客户端传文件,QQ采用的是P2P技术,不需要服务器中转。
王者荣耀的网络连接分析
1.更新-模仿TCP的UDP协议(腾讯自己封装)
2.TCP UDP协议的深入了解与实践
3.吸收优点 深入底层
路由器的通信流程(每层对应的硬件有哪些)
例:QQ->物理层(网卡,厂商提供) 数据链路层(写网卡驱动 通信协议)
会话层:登录 加密算法 应用层:QQ界面程序 表示层:解密
路由器 交换机:①网路层(ip协议,路由:数据发送路径[路由协议(算法)用来解决何种效率最高])②数
据链路层(安全 效率)
路由器国内研发主要方向:优化协议 算法 虚拟网卡->软件代替硬件 什么是AP QOS模式,带双
WAN 下载续传
路由表-数据结构,算法算出最高效路径
端口号(0-65535,2个字节,16位二进制,实际从1024开始用,之前有大部分有系统用)
TCP完整通信过程
1.创建套接字socket;2.绑定bind;3.监听listen;
4.对方主动连接connect-接收连接请求accept(会创建新的套接字);
5.使用新的套接字通信send/write-对方revc/read;
6.close
点(广)播例子
思路:主函数传参 使用线程接收(可分离属性) 内核链表封装客户端列表 信息解析函数 转发消
息(先遍历内核链表判断客户端是否存在)-服务器相当于中转站
UDP什么情况用? UDP占有系统资源少,可能会丢包
TCP是可靠的传输。下载时,telnet时....
UDP是不可靠传输。视频,语音聊天....
当你编写的应用软件不想考虑下面的连接是否可靠时用,既认为你发的信息对方一定收到.
当软件要求很小的延迟的时候使用UDP,但是必须在你软件中实现双方的确认,即你发信息
以后得想个办法确认对方是否收到了你发的信息.这样的好处是降低了网络的延迟.
bind的端就叫发送端,谁先接收谁绑定bind bind自己的IP 两边都绑定
接收端bind后占用解除 sinsize = 1;
作业:udp两边都绑定 两个项目 TCP广播 试题
0.发送本地记事本文件给指定客户端
1.tcp发图片给开发板800*480(Ubuntu控制命令控制图片的显示)-不是挂载
full-全屏
half-缩小一半显示
2.udp广播
发送端 绑定地址:192.168.1.255
接收端 不要绑定自己地址 可以绑定255/INADDR_ANY
四类网络地址(传统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后面一般是1253或2254之间的数结尾的。
4.20下午笔记
广播 点播 组播 -------区别
我的学习加经验方法:先自己看API敲一些代码-调试-步步改错-再调试-流程测验-参考案例(教师)
完善-再测验-记忆-快速使用
软件项目管理经验 做一个网页即时通讯需要了解什么协议
IP:网络层协议;
TCP和UDP:传输层协议;
HTTP:应用层协议;
SOCKET:TCP/IP网络的API。
TCP/IP代表传输控制协议/网际协议,指的是一系列协议。
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&UDP几种常见IO模型
1.TCP并发阻塞IO:多线程实现
多进程实现
调试时发现无法连接可换端口试试(可能没解除)
网友评论