趣谈网络协议
刘超
网易研究院云计算技术部首席架构师
立即订阅
38013 人已学习
课程目录
已完结 51 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 想成为技术牛人?先搞定网络协议!
免费
第一模块 通信协议综述 (4讲)
第1讲 | 为什么要学习网络协议?
第2讲 | 网络分层的真实含义是什么?
第3讲 | ifconfig:最熟悉又陌生的命令行
第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?
第二模块 底层网络知识详解:从二层到三层 (5讲)
第5讲 | 从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?
第6讲 | 交换机与VLAN:办公室太复杂,我要回学校
第7讲 | ICMP与ping:投石问路的侦察兵
第8讲 | 世界这么大,我想出网关:欧洲十国游与玄奘西行
第9讲 | 路由协议:西出网关无故人,敢问路在何方
第二模块 底层网络知识详解:最重要的传输层 (4讲)
第10讲 | UDP协议:因性善而简单,难免碰到“城会玩”
第11讲 | TCP协议(上):因性恶而复杂,先恶后善反轻松
第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难
第13讲 | 套接字Socket:Talk is cheap, show me the code
第二模块 底层网络知识详解:最常用的应用层 (4讲)
第14讲 | HTTP协议:看个新闻原来这么麻烦
第15讲 | HTTPS协议:点外卖的过程原来这么复杂
第16讲 | 流媒体协议:如何在直播里看到美女帅哥?
第17讲 | P2P协议:我下小电影,99%急死你
第二模块 底层网络知识详解:陌生的数据中心 (6讲)
第18讲 | DNS协议:网络世界的地址簿
第19讲 | HTTPDNS:网络世界的地址簿也会指错路
第20讲 | CDN:你去小卖部取过快递么?
第21讲 | 数据中心:我是开发商,自己拿地盖别墅
第22讲 | VPN:朝中有人好做官
第23讲 | 移动网络:去巴塞罗那,手机也上不了脸书
第三模块 热门技术中的应用:云计算中的网络 (5讲)
第24讲 | 云中网络:自己拿地成本高,购买公寓更灵活
第25讲 | 软件定义网络:共享基础设施的小区物业管理办法
第26讲 | 云中的网络安全:虽然不是土豪,也需要基本安全和保障
第27讲 | 云中的网络QoS:邻居疯狂下电影,我该怎么办?
第28讲 | 云中网络的隔离GRE、VXLAN:虽然住一个小区,也要保护隐私
第三模块 热门技术中的应用:容器技术中的网络 (3讲)
第29讲 | 容器网络:来去自由的日子,不买公寓去合租
第30讲 | 容器网络之Flannel:每人一亩三分地
第31讲 | 容器网络之Calico:为高效说出善意的谎言
第三模块 热门技术中的应用:微服务相关协议 (5讲)
第32讲 | RPC协议综述:远在天边,近在眼前
第33讲 | 基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛
第34讲 | 基于JSON的RESTful接口协议:我不关心过程,请给我结果
第35讲 | 二进制类RPC协议:还是叫NBA吧,总说全称多费劲
第36讲 | 跨语言类RPC协议:交流之前,双方先来个专业术语表
第四模块 网络协议知识串讲 (4讲)
第37讲 | 知识串讲:用双十一的故事串起碎片的网络协议(上)
第38讲 | 知识串讲:用双十一的故事串起碎片的网络协议(中)
第39讲 | 知识串讲:用双十一的故事串起碎片的网络协议(下)
第40讲 | 搭建一个网络实验环境:授人以鱼不如授人以渔
答疑与加餐 (9讲)
协议专栏特别福利 | 答疑解惑第一期
协议专栏特别福利 | 答疑解惑第二期
协议专栏特别福利 | 答疑解惑第三期
协议专栏特别福利 | 答疑解惑第四期
协议专栏特别福利 | 答疑解惑第五期
加餐1 | 测一测:这些网络协议你都掌握了吗?
加餐2 | 创作故事:我是如何创作“趣谈网络协议”专栏的?
加餐3 | “趣谈网络协议”专栏食用指南
第2季回归 | 这次我们来“趣谈Linux操作系统”
结束语 (1讲)
结束语 | 放弃完美主义,执行力就是限时限量认真完成
趣谈网络协议
登录|注册

第17讲 | P2P协议:我下小电影,99%急死你

刘超 2018-06-25

如果你想下载一个电影,一般会通过什么方式呢?

当然,最简单的方式就是通过HTTP进行下载。但是相信你有过这样的体验,通过浏览器下载的时候,只要文件稍微大点,下载的速度就奇慢无比。

还有种下载文件的方式,就是通过FTP,也即文件传输协议。FTP 采用两个 TCP 连接来传输一个文件。

  • 控制连接:服务器以被动的方式,打开众所周知用于 FTP 的端口 21,客户端则主动发起连接。该连接将命令从客户端传给服务器,并传回服务器的应答。常用的命令有:list——获取文件目录;reter——取一个文件;store——存一个文件。

  • 数据连接:每当一个文件在客户端与服务器之间传输时,就创建一个数据连接。

FTP 的两种工作模式

每传输一个文件,都要建立一个全新的数据连接。FTP 有两种工作模式,分别是主动模式PORT)和被动模式PASV),这些都是站在 FTP 服务器的角度来说的。

主动模式下,客户端随机打开一个大于 1024 的端口 N,向服务器的命令端口 21 发起连接,同时开放 N+1 端口监听,并向服务器发出 “port N+1” 命令,由服务器从自己的数据端口 20,主动连接到客户端指定的数据端口 N+1。

被动模式下,当开启一个 FTP 连接时,客户端打开两个任意的本地端口 N(大于 1024)和 N+1。第一个端口连接服务器的 21 端口,提交 PASV 命令。然后,服务器会开启一个任意的端口 P(大于 1024),返回“227 entering passive mode”消息,里面有 FTP 服务器开放的用来进行数据传输的端口。客户端收到消息取得端口号之后,会通过 N+1 号端口连接服务器的端口 P,然后在两个端口之间进行数据传输。

© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《趣谈网络协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(80)

  • 风太息
    99%卡住的原因是什么呢,似乎没讲
    2018-06-25
    100
  • rtoday
    试着解析为什么99.99%
    如果有误还望高手指正与指导
    不论是依赖tracker,还是分布式哈希算法,p2p开宗明义就是要减轻server压力,把压力转嫁给client。
    99.99%的定义,是最后校验出了错误,漏失某个文件。
    而为什么会漏失呢?还是p2p开宗明义说的,把压力转嫁给client,当client流量压力过大而下线了,其他人就无法找到这个文件了,顶多DHT网络告诉每个client,漏失的文件在某个下线的人手上。你们就乖乖等他上线,并且把手上的99.99%分享给其他新来的new node吧。
    为了解决这个问题,最早应该是迅雷,提供了p2sp,长效种子,让server也有义务承担一些压力。
    至于迅雷为什么也会99.99%,应该是更进阶的技术问题了。比如下载网站专门防止迅雷盗链。你有张良计,我有过墙梯。
    2018-07-17
    34
  • 方圆佰李
    Node new想下载文件1,但它本身并没有文件1,那是通过什么计算出文件1的哈希值的?
    2018-06-28
    1
    17
  • 来者可追
    刘老师,您好,我们都付费买了课程,肯定是想学好的,为什么不发不出来呢?那样的话,真的非常感谢您了。

    作者回复: 运营策划的活动,哈哈

    2018-06-26
    12
  • LongXiaJun
    哈哈哈,想要网络协议知识图谱~
    2018-06-25
    12
  • 月饼
    P2P网络是怎么解决局域网穿透的?upnp吗?
    2018-06-28
    9
  • 阿痕
    还是没有回答99%的问题呢
    2018-06-26
    4
  • Hurt
    看一两遍是不够了 得看三四遍
    2018-06-26
    3
  • darren
    这就是种子过久了失效的原因吗?

    作者回复: 所有服务器都停了,也就下载不到了

    2019-06-27
    2
  • soga
    新加入dht网络的节点最开始没有任何其他节点的信息吧?要怎么启动?是会默认给一两个节点做初始的已知网络节点吗?如果是的话,这些初始节点怎么得到?

    作者回复: 种子里面有

    2018-07-05
    2
  • bochs
    这一节好多算法!己经迷路了我!
    2018-06-27
    2
  • 太多的借口
    本地host文件与dns查询
    2018-06-26
    2
  • 海昌
    思考题二:默认应该先到本地的hosts文件找下,再到dns吧
    2018-06-26
    2
  • Hurt
    快播 以前的方式 是不是这样的啊
    2018-06-25
    2
  • winlans
    第二是DNS吧,每次域名请求都会先查找本地hosts文件,如果没有匹配的就会去请求dns服务换取ip。这也是有时候dns配置错误,会导致QQ正常,网页却打不开的奇怪现象。
    2018-06-25
    2
  • 时间是最真的答案
    迅雷下载是不是使用的P2P协议?

    作者回复: 是的

    2019-04-09
    1
  • 赵梅
    同问,Node new想下载文件1,但它本身并没有文件1,那是通过什么计算出文件1的哈希值的?

    作者回复: 种子里面有

    2018-09-27
    1
  • 不想学习
    每个都是客户端,没有固定公网ip,怎么互相连接上?这块貌似没讲清楚啊
    2018-08-04
    1
  • kevinwang527
    老师的每篇文章我都会看三遍,虽然有些文章没有留言,那是因为平常用的比较少。我们现在做的游戏就是分布式的,然后,用hash来算出每个节点的位置。因为游戏服务器的节点一般都有状态的,所以要保证hash值的一致。这里面算距离的方法很值得借鉴。

    第二个问题 DNS
    2018-07-28
    1
  • 风车车
    思考题老师也没讲解,看评论只有赞,没有对评论内容进行对错 纠正。

    作者回复: 每周三篇文章,压力太大,来不急讲,后面会补上

    2018-07-16
    1
收起评论
80
返回
顶部