PYTHON-网络通讯 TCP

网络编程:    学习网络编程    为何?目的:    服务端特色:网络通信(通讯)什么是网络通信?为何?目的:网络创建的目的是为数据交互(通讯)如何实现通信(通讯)?互联网协议互联网=物理链接介质+互联网协议互联网协议:(open system interconnection)什么是互联网协议?    OSI七层协议/tcp/ip五层应表会 传 网 数 物MAC地址ipportip+macip+port网页地址解析什么是网络编程?socket套接字什么是socket:socket中用户最关心的是TCP和UDP    TCP:   协议:   传输方式:        优势:        缺点:        使用场景:   套接字type参数:   同时链接客户端数量:    UDP :        协议:        传输方式:        缺点:        优势:        使用场景:   套接字type参数:   同时链接客户端数量:TCP VS UDP 可靠性:TCP:TCP三次握手建链接,四次挥手断链接TCP目的洪水攻击TCP template半链接池,工做原理服务端须要遵循的原则粘包问题引发粘包的TCP特色自定义报头TCP 远程执行CMD(粘包的解决方法)UDP:UDP template============================================================网络编程:1    学习网络编程 其实就是在学socket套接字 *****    为何?目的:编写一个C/S架构的软件,            二者基于网络通讯 为了使程序可以分布在不一样的计算上        C/S: Client--------基于网络----------Server        B/S: Browser-------基于网络----------Server        服务端特色:         一、不间断地提供服务         二、服务端要支持并发+高性能2 网络通信(通讯)什么是网络通信?*****    在不一样的计算机上 一个安装客户端 另外一安装服务端  经过网络来通信为何?目的:网络创建的目的是为数据交互(通讯)如何实现通信(通讯)?     1.创建好底层的物理链接介质 (网线,WIFI,光纤)---网络工程师关注     2.通信协议(必须遵循相同的标准)---应用软件开发者 关注            (比做在中国就像是讲普通话,全世界就像是讲英语)3 互联网协议互联网=物理链接介质+互联网协议互联网协议:(open system interconnection)什么是互联网协议?    比做 是计算机界的英语    OSI七层协议 **                              tcp/ip五层    应 (表 会) 传 网 数 物    应用  应用软件,自定义协议,须要双方程序员商量(报头)     应用层(表示层和会员层都属于应用层)          浏览器协议(HTTP FTP..)    表示    会话    传输 -TCP/UDP-基础port端口工做的协议                             传输层    网络 -ip协议 (IP(DHCP分配),子网掩码)                            网络层            1.用来定义数据传输格式 2.定位一个局域网 3.定位一台主机    数据链路层-以太网协议Ethernet(基于mac地址)-报头(信封)和真实数据   数据链路层    物理层-发送电信号(二进制数10101 )                               物理层        传输层            TCP/UDP            TCP 传输是可靠的 传输前须要三次握手确认  传输过程当中须要返回确认            效率较低            UDP 不可靠传输  没有三次握手 也没有确认信息 仅仅传输数据 不关心接收方是否收到            使用socket接口完成TCP 和UDP以太网协议 规定 一个计算比须要一个网卡,一个网卡对应1个MAC地址,MAC能够标识 惟一一台计算机        古老的广播式的通讯ip 能够标识 在局域网内找到一台计算机ip+mac能够标识 全世界范围内独一无二的 一台计算机的位置    (通讯的时候,必定要获取对方的IP地址,拿到ip后,ARP协议自动将IP解析成MACport能够标识 一台计算机之上惟一的 一个基于网络通讯的 应用软件4 *****如何标识全世界范围内独一无二的一个socket程序(基于网络通讯的 一个应用软件)  ip+(mac)+port网页地址解析    就是域名 ,将域名给到 DNS服务器(域名服务器) (基于UPD协议)解析成IP,(DNS默认端口53)    对应有ip 和端口port,到这台机器上拿到路径里的文件    DNS 全球共13台根服务器,最大有效传输512字节网页:    https://    www.cnblogs.com:80                     /linhaifeng/p/7278389.html    应用层协议   域名+端口 (先把域名交给dns解析成IP地址)              路径          逻辑层面建好双向通路(TCP三次握手)              ==>给应用层按http协议传输数据,封包后交给传输层,给对方,再按这条线返回                (物理层 实际上在传输层后还有网络层,数据链路层,物理层)5 socket套接字(*****)什么是socket:  学习网络编程 其实就是在学socket            socket套接字是位于应用层与传输层之间的一个抽象接口层            是一个在传输层上封装好的模块!(是对底层的 TCP UDP IP ethernet协议进行封装)            要完成网络通信,只须要调用socket的接口或者说按照socket的标准编写程序,写出的程序天然是遵循tcp/ip协议            (比做 打电话时电话机的接口 服务端:买电话 插电话卡 等电话链接 收发消息 挂电话 关机                                    客户端:买电话 拨电话 收发消息 挂电话)    python中使用socket的时候用户须要关心的是        ip地址,port端口, 传输协议TCP/UDP,你要发送的数据dataTCP和UDP是传输层最多见的协议(*****)    主要控制传输数据的方式    TCP        传输方式:要创建链接(流式协议:像水流同样源源不断的发过去)                       (数据量比较小,时间间隔较短的不会发过去,等下一次一块儿)        优势:             可靠协议,能够保证数据的完整性  经过三次握手来与服务器创建链接                (好比 a机器给b机器发送数据包  要求b机器必须当即返回一个确认包                在对方确认后才会中本身的操做系统缓存清除这个数据包                a机器会等待一段时间,若是超时尚未收到确认,则重发数据)        缺点:            传输效率比UDP低        使用场景:            文字聊天,支付宝转帐等        套接字type参数:SOCK_STREAM        同时链接客户端数量:1个    UDP :        传输方式:            不须要创建链接,直接发送,   数据报协议        优势:            发送效率高,但有效传输的数据量最多为500bytes        缺点:            不可靠:发送数据,无需对确认,容易丢包            发一条数据无需收到对方的确认消息,会马上从本身的操做系统缓存中清除该条消息        使用场景:            视频通话,语音通话等        套接字type参数:SOCK_DGRAM        同时链接客户端数量:            能够同时处理多个客户端 是由于CPU处理速度快 给人感受像是同时处理TCP VS UDP 可靠性:    TCP可靠 是由于发送数据后必须收到确认包TCP  三次握手建链接,四次挥手断链接       两条双向管道: C===>S 发消息管道  S===>C 收消息管道       (比做 双11购物 一管道传商品金额 另外一管道传购物状态信息)        三次握手: (syn,seq,ack,fin都是标志位,表明不一样含义)            c(客户端)----syn=1(请求连接) seq=x(序列号)--->s(服务端)            s----ack=1+x  syn=1(请求连接) seq=y(序列号)--->c                (确认请求,并在原来序列号基础上+1)            c----ack=1+y------->s            tcp创建的是一个双向链接            c------------------>s            c<-----------------s        四次挥手:一般是服务端先有断连接请求,节约资源            s------fin=1(断连接请求)seq=x+2---------->c            c------>ack=3+x(确认请求)--------->s            c------>fin=1,seq=y+2--------->s  不能和上一条合并是由于S-C数据可能还没传完            s------>ack=3+y--------->c一、TCP  目的是创建双向通路 传输数据可靠          ((好人协议)客户端发包(发请求)后,服务端必定会响应 发出确认信息)    洪水攻击 黑客模拟大量的客户端发请求,让服务端响应,虚拟的客户端 服务端没法识别 形成大量资源占用                syn_send大量涌现(公司有预谋的发起)  解决方案:增长带宽
相关文章
相关标签/搜索