网络协议

《圣经》中有一个通天塔的故事,大致是说,上帝为了阻止人类联合起来,就让人类说不同的语言。人类没法儿沟通,达不成“协议”,通天塔的计划就失败了。

但是千年以后,有一种叫“程序猿”的物种,敲着一种这个群体通用的语言,连接着全世界所有的人,打造这互联网世界的通天塔。如今的世界,正是因为互联网,才连接在一起。

文末有福利!!!

当 “Hello World!” 从显示器打印出来的时候,还记得你激动的心情吗?

public class HelloWorld {public static void main(String[] args){System.out.println("Hello World!");}
}

如果你是程序员,一定看得懂上面这一段文字。这是每一个程序员向计算机世界说“你好,世界”的方式。但是,你不一定知道,这段文字也是一种协议,是人类和计算机沟通的协议,只有通过这种协议,计算机才知道我们想让它做什么。

当然,这种协议还是更接近人类语言,机器不能直接读懂,需要进行翻译,翻译的工作教给编译器,也就是程序员常说的 compile。这个过程比较复杂,其中的编译原理非常复杂,我在这里不进行详述。

但是可以看得出,计算机语言作为程序员控制一台计算机工作的协议,具备了协议的三要素。

  • 语法,就是这一段内容要符合一定的规则和格式。例如,括号要成对,结束要使用分号等。
  • 语义,就是这一段内容要代表某种意义。例如数字减去数字是有意义的,数字减去文本一般来说就没有意义。
  • 顺序,就是先干啥,后干啥。例如,可以先加上某个数值,然后再减去某个数值。

会了计算机语言,你就能够教给一台计算机完成你的工作了。恭喜你,入门了!

但是,要想打造互联网世界的通天塔,只教给一台机器做什么是不够的,你需要学会教给一大片机器做什么。这就需要网络协议。只有通过网络协议,才能使一大片机器互相协作、共同完成一件事。

这个时候,你可能会问,网络协议长啥样,这么神奇,能干成啥事?我先拿一个简单的例子,让你尝尝鲜,然后再讲一个大事。

当你想要买一个商品,常规的做法就是打开浏览器,输入购物网站的地址。浏览器就会给你显示一个缤纷多彩的页面。

那你有没有深入思考过,浏览器是如何做到这件事情的?它之所以能够显示缤纷多彩的页面,是因为它收到了一段来自 HTTP 协议的“东西”。我拿网易考拉来举例,格式就像下面这样:

HTTP/1.1 200 OK
Date: Tue, 27 Mar 2018 16:50:26 GMT
Content-Type: text/html;charset=UTF-8
Content-Language: zh-CN
<!DOCTYPE html>
<html>
<head>
<base href="https://pages.kaola.com/" />
<meta charset="utf-8"/> <title> 网易考拉 3 周年主会场 </title>

这符合协议的三要素吗?我带你来看一下。

  • 首先,符合语法,也就是说,只有按照上面那个格式来,浏览器才认。例如,上来是状态,然后是首部,然后是内容。
  • 第二,符合语义,就是要按照约定的意思来。例如,状态 200,表述的意思是网页成功返回。如果不成功,就是我们常见的“404”。
  • 第三,符合顺序,你一点浏览器,就是发送出一个 HTTP 请求,然后才有上面那一串 HTTP 返回的东西。

浏览器显然按照协议商定好的做了,最后一个五彩缤纷的页面就出现在你面前了。

既然网络协议这么重要,那我们该如何学习呢?

关于如何学习网络协议的知识,小编准备了一份资料,这份资料是我们结合包括有百度、阿里巴巴、字节跳动、美团等大厂的学员内部资料进行整理得来的,总共6万字,全篇共十七个大的章节,近百个知识点,通过TCP、UDP、WebSocket、OkHttp、Retrofit等来加深大家对协议的印象和理解。今天就拿出来分享给大家。

由于篇幅原因,这份纯手写笔记已经被整理成了PDF文档,有需要网络协议笔记完整文档和PDF的可以添加下方微信回复JJ即可免费领取!(承诺:100%免费)

全篇目录如下:

第一章:5层协议体系结构

将计算机网络分层结构进行一个分层简单的介绍,将本文的大纲展示给各位。

本章内容:

  • 各层作用

  • 数据封装与解封装

第二章:TCP、UDP协议

本章内容:

  • TCP

    • 主要特点
    • TCP连接管理
    • TCP连接的三次握手
    • TCP释放连接的四次挥手
    • TCP可靠传输
  • UDP

第三章:HTTP

  • HTTP的连接方式

    • 非持久连接

    • 持久连接

第四章:TCP/IP 协议简介

  • IP

  • TCP

第五章:跟 TCP/IP 学协议设计

  • 协议版本如何升级?

  • 如何发送不定长数据的数据包

  • 上传多个文件,只有所有文件都上传成功时才算成功

  • 如何保证数据的有序性

  • 如何保证对方收到了消息

第六章:Socket

  • Socket 基本用法

  • Socket、ServerSocket 傻傻分不清楚

  • Socket 长连接的实现

第七章:WebSocket

  • WebSocket 握手

  • 客户端的简单示例

  • 客户端 API

  • 构造函数

    • WebSocket

    • webSocket.readyState

    • webSocket.onopen

    • webSocket.onclose

    • webSocket.onmessage

    • webSocket.send()

    • webSocket.bufferedAmount

    • webSocket.onerror

  • WebSocket 服务器

第八章:Volley

  • Volley简介

  • 下载Volley

  • StringRequest的用法

  • JsonRequest的用法

  • 使用Volley加载网络图片

  • ImageRequest的用法

    • ImageLoader的用法

    • NetworkImageView的用法

  • 定制自己的Request

    • 自定义XMLRequest

    • 自定义GsonRequest

  • Volley源码解读

第九章:OkHttp

  • 使用方法

  • 基本对象介绍

    • OkHttpClient

    • Request

    • Call

    • RealCall

    • AsyncCall

    • Dispatcher

    • 小结

  • 流程分析

    • 同步请求

    • 异步请求

    • 获取Response

    • Interceptor

    • RealInterceptorChain

  • 拦截器

    • client.interceptors

    • RetryAndFollowUpInterceptor

    • BridgeInterceptor

    • CacheInterceptor

    • ConnectInterceptor

    • client.networkInterceptors

    • CallServerInterceptor

  • 总结

  • 反思

    • 设计模式

    • 线程安全

    • 数据结构

第十章:Retrofit使用

  • Retrofit入门

    • 创建Retrofit实例

    • 接口定义

    • 接口调用

  • Retrofit注解详解

    • 第一类:HTTP请求方法

    • 第二类:标记类

    • 第三类:参数类

  • Gson与Converter

  • RxJava与CallAdapter

  • 自定义Converter

  • 自定义CallAdapter

  • 其它说明

    • Retrofit.Builder

    • Retrofit的Url组合规则

    • Retrofit提供的Converter

    • Retrofit提供的CallAdapter:


第十一章:Retrofit原理

  • 什么是动态代理?

  • 源码解析

    • loadServiceMethod(method)

    • invoke(args)

    • CallAdapted

    • Converter

  • Retrofit是如何将子线程切换到主线程?

  • Retrofit为什么要使用动态代理?

  • 总结

第十二章:Retrofit面试

  • 使用方法

  • 流程解析

    • 构建 Retrofit 实例

    • 构建 API 接口实例

    • 执行请求,解析响应

  • 为什么要引入CallAdapter与Converter?

  • CallAdapter 是如何工作的?

    • 添加

    • 匹配

    • 工作

  • Converter 是如何工作的?

  • 添加

  • 匹配

  • 工作

  • 说说使用到了哪些设计模式

    • 动态代理模式

    • 为什么要使用动态代理来获取API方法?

    • 策略模式

    • 适配器模式

    • 工厂方法模式

    • 建造者模式

  • 使用过程中踩过什么坑?

  • 总结

第十三章:Netty之搭建服务端与客户端

  • 简单的介绍一下Netty

  • 创建Tcp服务端

  • 创建客户端,与创建服务端差不多一至

  • 先启动服务端 在启动客户端,这样就可以建立起连接了

第十四章:Netty之Encoder、Decoder、Handler 的使用

  • Encoder的作用

  • Decoder的作用

  • Handler的作用

  • 示例

  • 运行

第十五章:Netty之心跳处理、断线重连

  • 客户端添加心跳处理

  • 修改

  • 断线重连处理

第十六章:Netty之粘包、拆包,处理

  • 什么粘包呢?

  • 一般处理粘包的手段

  • 示例

    • 首先给服务端添加DelimiterBasedFrameDecoder

    • 添加$符号

    • 我们写个连续发送数据包的代码

  • 同步

  • 效果展示

第十七章:Netty之创建Web服务、作为HTTP服务器

  • 创建Http服务

  • 在HttpServerHandler中处理收到的HTTP请求

  • 响应HTTP请求

  • 示例

  • 上面使用到的测试接口地址

  • 运行效果


关于如何学习网络协议的知识,小编准备了一份资料,这份资料是我们结合包括有百度、阿里巴巴、字节跳动、美团等大厂的学员内部资料进行整理得来的,总共6万字,全篇共十七个大的章节,近百个知识点,通过TCP、UDP、WebSocket、OkHttp、Retrofit等来加深大家对协议的印象和理解。今天就拿出来分享给大家。

由于篇幅原因,这份纯手写笔记已经被整理成了PDF文档,有需要网络协议笔记完整文档和PDF的可以添加下方微信回复JJ即可免费领取!(承诺:100%免费)

结合BATZ等大厂总价值2999元的课程资料《网络协议》免费分享,仅限本周相关推荐

  1. 推荐 :这里有一份价值 7680 元的学习资料,要免费送给你

    什么方法使0基础学生 3个月就能说一口流利英语? 一天晚上,他接到学生发来的短信: "老师,这三个月来,我严格按照你说的学习方法去做,没想到我英语提升那么快,现在已经能跟外国人交流自如.就在 ...

  2. thinkpad笔记本散热风扇_十代酷睿笔记本低至2999元 你可以入手了_笔记本新闻

    这年头3000元能干什么?买一套化妆品还是一套乐高积木?现在很严肃地告诉你,可以买一台笔记本,而且是搭载英特尔第十代酷睿处理器的轻薄笔记本--联想ThinkPad 翼14 Slim. 联想ThinkP ...

  3. 2999元起!Redmi K40系列不止骁龙888:还将标配双扬声器

    根据Redmi品牌总经理卢伟冰此前公布的消息,全新的Redmi K40系列将于下月与大家见面,售价仅为2999元起.而随着发布时间的日益临近,关于该机的爆料也越来越密集,除了搭载高通骁龙888旗舰平台 ...

  4. 新款iPhone SE预约量超40万,拼多多已经安排上,击穿底价2999元?

    不管香不香,良不良心,这两天关于新款iPhone SE的讨论一直没有停下过,今晚这款手机就要开启预购,在京东.天猫等平台上早已开启了预约,20:01开启预售. 截至目前,新款iPhone SE在京东上 ...

  5. Ov两款骁龙865手机即将发布:其中一款或低于2999元

    尽管三月发布了不少骁龙865 5G手机,但这并不影响手机厂商们继续发布新机的趋势,最近又有两款新旗舰与大家见面,还是我们熟悉的OPPO和vivo厂商,要知道这两家在三月已经发布了好几款手机了,奈何其用 ...

  6. 比iOS还流畅!国产手机最优秀90Hz手机发布,2999元起

    今天下午,一加举办新品发布会,正式发布一加7T.一加7T Pro.两款新机将于10月22日上午10点正式发售. 价格方面,一加 7T 8 + 128GB 售价 2999 元,8 + 256GB 售价 ...

  7. OPPO Reno 2正式发布:主打4800万变焦四摄 售价2999元

    9月10日消息,OPPO今天正式发布了4800万变焦四摄的新品Reno2,售价2999元,9月12日线上线下同时开售. OPPO Reno 2搭载6.5英寸20:9阳光护眼全景屏.官方介绍,Reno2 ...

  8. 年度电竞游戏旗舰红魔3S发布:性能王者2999元起!

    2019年9月5日"御风超神·红魔3S新品发布会"于上海举办,红魔系列电竞游戏手机最新家族成员红魔3S正式发布.红魔3S标配高通骁龙855 Plus移动处理器.UFS3.0闪存.配 ...

  9. 2999元!联想Z6 Pro开启预售:搭载骁龙855+后置高清四摄

    [TechWeb]联想Z6 Pro现可在京东等平台预约,预约价格2999元.Z6 Pro搭载骁龙855处理器,后置高清4摄,还配备PC级液冷散热模块.整机大小6.39寸,与上一代Z5 Pro GT一样 ...

最新文章

  1. TVM代码生成codegen
  2. Linux那些事儿 之 戏说USB(8)从这里开始
  3. 华为主题包hwt下载_华为手机非官方主题应用指南
  4. datatable更新到mysql_SQL通过Datatable更新数据库表内容
  5. fpga电平约束有什么作用_FPGA从串模式
  6. eclipse插件 --js
  7. javascript等待异步线程完成_JavaScript 中的异步原理
  8. 计算机专业课题 结题报告,计算机结题报告 - 结题报告 - 书业网.doc
  9. JAVA通信编程(二)——如何读取java的properties配置文件(插播)
  10. SVN更新时报403错误
  11. 手抄Threejs源码之Scene
  12. table设置width无效
  13. 【mysql】MySQL存储IP地址
  14. MFC:VS拖拽多个文件到控件并获取路径
  15. Scala For Java的一些参考
  16. ABC三类地址及其子网掩码
  17. office2003安装包下载,专业版完整版官方原版!
  18. win10修改ip或dns弹出“出现了一个意外”对话框解决办法
  19. Android 官方文档学习笔记(1):Androiid以及相关应用组件概念
  20. Android视频监控!!!随时随地监控你的家庭

热门文章

  1. 视频号的特征以及视频号的5大关键:国仁楠哥
  2. 使用 Python 程序实现摩斯密码翻译器|Python 主题月
  3. 华为鸿蒙北向应用开发DAY9——来自软通教育项目实训
  4. MOS管工作原理及详解
  5. 打包下载图片(文件)
  6. php 如何用op浏览器开发手机网站,关于开发手机网站的一些总结
  7. c语言万年历流程图加程序,基于C语言的万年历(内附程序).pdf
  8. BUG:statsmodels.tools.sm_exceptions.MissingDataError: exog contains inf or nans
  9. elasticsearch 磁盘优化-index
  10. python微信使用教程_小白用Python | 十分钟Python玩微信教程