博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络编程知识点(一)
阅读量:5240 次
发布时间:2019-06-14

本文共 1850 字,大约阅读时间需要 6 分钟。

C/S架构:客户端与服务端架构 B/S架构:浏览器与服务端架构 想要实现通信,要具备网卡网线,网卡上有全球唯一mac地址 多台机器实现通讯要用到交换机,一台机器通过交换机寻找一台机器叫做广播,回复的过程叫做单播 arp协议:通过ip地址获取mac地址,         一台机器通过交换机要找另一台机器,然后那台机器就把自己的mac地址通过交换机回复给他         这台机器就把他的mac地址短暂缓存起来,短暂的这一段时间再想和那台机器实现通讯就不需要再广播了 机器与机器之间通过交换机连接起来形成局域网,局域网与局域网之间通过路由器连接起来 一个局域网之间的机器不能直接和另一个局域网之间的机器通信,必须通过网关 IP地址和子网掩码的按位与得到一个局域网网段 ip协议的作用:一是为每台计算机分配IP地址,二是确定那些地址在同一个子网络 一般情况下使用8000以后的端口 IP地址:一台机器在网络上的位置 IP只在局域网中生效,也就是只能被局域网中的机器通过IP+端口进行访问 想要被所有机器访问,必须申请一个公网IP,也就相当于在所有路由器上都注册了 "127.0.0.1":本地的回环地址 TCP:它是全双工(client端和server端都可以收发信息),可靠地,面向连接的,安全性高     连接时三次握手:         客户端:我可以连接你么         服务端:可以啊,我可以连接你么         客户端:可以啊     断开时四次挥手:         客户端:我要断开你了         服务端:好的         服务端:我要断开你了         客户端:好的     为什么是三次握手却是四次挥手?     因为断开的时候,客户端说要断开服务端同意,     但此时不能强制要求服务端非得断开,此时服务端还能向客户端发送消息,     如果服务端要断开,就得再次发出请求,然后客户端同意 udp:不是长连接,速度快,安全性低     udp的server端不需要监听也不需要建立连接     在启动服务后,只能被动的等待客户端发送消息过来     客户端发送消息的同时还会自带地址信息     消息回复的时候不仅需要发送消息,还需要把对方的地址填写发送过去 互联网协议按照功能不同分为tcp/ip五层: 应用层 "hello" 传输层 选择tcp/udp信息       tcp/udp协议     *tcp/udp协议属于传输层 网络层 加上ip信息              ip协议 数据链路层 加上mac地址          arp协议 物理层 无线、网卡等 基于tcp的socket:     可能会黏包不会丢包     之所以会黏包是因为:         只有在tcp协议中才会出现黏包现象         tcp协议是面向流的协议         在发送的数据过程中还有缓存机制来避免数据的丢失         因此在连续发送小数据以及接收大小不符的时候容易出现黏包         两种情况会造成黏包:             连续send两个小数据             两个recv,第一个recv非常小     解决黏包问题:         在发送大量数据之前先告诉接收端数据的大小         如果想要漂亮的解决问题可以用struct模块自定制协议 基于udp的socket:不会黏包可能会丢包 struct模块:     struct.pack("i", 1024)->将int类型的数据转换成四个字节的bytes类型     可以利用struct模块解决黏包问题,先struct.pack四个字节send过去,然后让服务端知道需要recv多长的数据     网络上传输的数据叫做数据包,数据包里的所有数据都是报文,所有的报文都有报头 利用struct模块实现大文件传输 heders = {"filename": "xxx", "filesize": 1024, "filetype": "txt", "filepath": r"c:xxx"} 先发送报头的长度, 然后对面接受四个字节,获得报头 从报头中获取信息然后接收数据 程序两端都约定好的,就是一种自制协议,但是一个好的协议一定是最合理的,最节约时间的

转载于:https://www.cnblogs.com/QimiSun/p/9949799.html

你可能感兴趣的文章
编程珠玑第十一章----排序
查看>>
Face The Right Way POJ - 3276 (开关问题)
查看>>
STEP2——《数据分析:企业的贤内助》重点摘要笔记(六)——数据描述
查看>>
变量的命名规范
查看>>
手机端自动跳转
查看>>
react中进入某个详情页URL路劲参数Id获取问题
查看>>
首届.NET Core开源峰会
查看>>
ViewPager的onPageChangeListener里面的一些方法参数:
查看>>
python pdf转word
查看>>
文本相似度比较(网页版)
查看>>
Jenkins关闭、重启,Jenkins服务的启动、停止方法。
查看>>
CF E2 - Array and Segments (Hard version) (线段树)
查看>>
Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
查看>>
SIGPIPE并产生一个信号处理
查看>>
CentOS
查看>>
Linux pipe函数
查看>>
java equals 小记
查看>>
爬虫-通用代码框架
查看>>
2019春 软件工程实践 助教总结
查看>>
YUV 格式的视频呈现
查看>>