-
12、应用层
参考:【MJ亲授】网络协议从入门到底层原理目录 快速开始 应用层的常见协议 域名(Domain Name) DNS(Domain Name System) DHCP 几个问题快速开始一、域名为了方便记忆 根域名 顶级域名 二级域名 三级域名二、DNS协议(应用层)域名需要解析出ip地址 DNS协议,DNS服务器域名申请的流程三、DHCP协议(应用层)ip地址的分配:静态分配和动态分配动态分配 DHCP协议,DHCP服务器 分配的四个阶段:发现服务器 - 提供...…
-
11、连接、释放连接
参考:【MJ亲授】网络协议从入门到底层原理目录 快速开始 连接 释放连接 几个问题快速开始一、连接三次握手及开始发送数据时 序号和确认号极其标志位的变化 客户端 SYN=1 ACK=0 seq=0 ack=0 len=0 发起连接请求 服务端 SYN=1 ACK=1 seq=0 ack=1 len=0 同意建立连接 客户端 SYN=0 ACK=1 seq=1 ack=1 len=0 我知道你同意了,下面我要开始发送数据了 客户端 SYN=0 A...…
-
10、TCP_序号、确认号
参考:【MJ亲授】网络协议从入门到底层原理目录 快速开始 序号、确认号 序号、确认号变化流程快速开始一、SYN、ACK、seq、ackSYN=1:表示这是一个同步请求,在连接时有用 ACK=1:表示确认号有效 seq:相对序号,发送的数据的第一个字节的编号 ack:确认号,告知对方我已经收到你ack-1个字节,请发送ack号开始的数据seq是对对方ack的回应ack是对对方seq的确认,ack从另一个角度理解是告诉对方目前已经收到了ack-1个字节二、数据分片和组装...…
-
9、TCP_流量控制、拥塞控制
参考:【MJ亲授】网络协议从入门到底层原理目录 快速开始 流量控制 拥塞控制快速开始一、流量控制为什么要进行流量控制? 接收窗口不足,减少丢包,避免浪费网络资源流量控制的手段(点对点): 接收方窗口大小来控制一种特殊情况是,接收方窗口为0时怎么处理 发送方开启一个定时器,隔一段时间发个测试报文去询问二、拥塞控制为什么要进行拥塞控制?避免过多数据注入网络,避免路由和链路过载,丢包浪费网络资源拥塞控制的手段: 慢开始、加法增大、乘法减小、快重传、快恢复几个概念: MSS 拥...…
-
8、TCP_可靠传输
参考:【MJ亲授】网络协议从入门到底层原理目录 快速开始 TCP的几个要点 TCP可靠传输快速开始一、可靠传输1、最开始的可靠传输实现方式:ARQ(Automatic Repeat-reQuest)协议停止等待 + 超时重传存在的问题:每发送一次数据,都要等待确认,时间过长。比如分片数据发送后要等待1s收到确认再发送下一片,那么发送10个分片数据的时间就是10s2、现在的解决方式:ARQ协议 + 滑动窗口协议停止等待 + 超时重传 + 滑动窗口一次发送多个分片数据,通过确认号来...…
-
7、传输层
参考:【MJ亲授】网络协议从入门到底层原理目录 快速开始 传输层(Transport) UPD(User Datagram Protocol) TCP(Transmission Control Protocol)快速开始一、UDP1、udp协议首部示例2、端口客户端端口临时随机开启服务端端口不同协议有不同端口防火墙可以禁用某些端口来达到禁止访问的目的 比如数据库协议二、TCP传输层(Transport)传输层有2个协议 TCP(Transmission Control Pro...…
-
6、网络层
参考:【MJ亲授】网络协议从入门到底层原理目录 快速开始 网络层(Network) ping的几个用法快速开始一、IP首部图片示例二、首部协议标识协议:封装的数据部分使用的什么协议,比如传输层过来的 tcp 和 udp、网络层产生的 arp 和 icmparp协议工作在网络层icmp协议工作在网络层我们ping的时候是没有经过应用层和传输层的 IP首部 + icmp首部 + 数据类似的协议还有:ppp 协议工作在链路层csma/cd 协议工作在链路层三、TTL生存时间,允许传过路...…
-
5、网络分层(物理层、链路层)
参考:【MJ亲授】网络协议从入门到底层原理目录 快速开始 网络互联模型 物理层(Physical) 数据链路层(Data Link)快速开始一、小知识点1 不同路由器效果不同一般路由器是连接不同的网段,但有的路由器可以连接相同的网段2 为什么ping的时候第一次会超时第一次要通过ARP广播获取Mac地址,路由器忙不过来会把数据包给扔了,所以第一次会超时二、网络互联模型介绍1、物理层物理层设备:网线、集线器、交换机、网卡、路由器模拟信号 数字信号单工通讯(广播) 半双工通讯(对讲...…
-
4、路由
参考:【MJ亲授】网络协议从入门到底层原理目录 快速开始 路由 相关概念 公网IP、私网IP快速开始一、数据包的传输过程IP地址 Mac地址传输过程中源IP地址和目标IP地址不会变Mac地址会随着在不同链路传输进行变换数据从一台主机传递到另外一台主机是IP地址和Mac地址配合的结果二、路由路由默认只知道跟它直连的网段 非直连的网段需要静态路由和动态路由告诉他动态路由: 路由选择协议,一个路由器问另一个跟它直连的路由器,哎跟你直连的网段有哪些 这个路由就知道了这些网段。 一直...…
-
3、MAC_IP地址
参考:【MJ亲授】网络协议从入门到底层原理目录 快速浏览 MAC地址 IP地址 子网 超网快速浏览一、mac地址6个字节 前三厂商标识后三自行分配二、IP地址+子网掩码网络号 + 主机号 主机号全0代表网段 主机号全1代表广播向这个网段所有主机发信息三、网址分类A类 B类:128开头 128.0.0.0是第一个B类网段 C类:192开头 192.0.0.0是第一个C类网段四、等长子网划分子网、超网、等长子网划分、变长子网划分 不管是什么怎么划分,都是在A类、B类、...…
-
2、基本概念(二)
参考:【MJ亲授】网络协议从入门到底层原理目录 快速浏览 网络互联模型 计算机之间的通信基础快速浏览一、设备认识1、集线器 无智商,将数据发给任何跟它相连的设备2、网桥 只有两个接口 可以记录接口一侧设备的Mac地址 隔绝冲突域 缺点:接口太少同一接口侧仍然会有冲突3、交换机 具有多个接口的网桥,每个接口的mac地址都知道 局域网的最终解决方案 全球计算机只有网桥连接会怎样?4、路由 连接两个不同的网段 隔绝广播域(连接不同网段)现代的网络使用的是...…
-
1、基本概念
参考:【MJ亲授】网络协议从入门到底层原理目录 快速浏览 互联网(internet) 搭建环境 总结快速浏览一、客户端与服务器通讯过程1、服务端 搭建Java服务器开发环境 项目创建 项目部署到服务器软件,客户端才能访问到。 部署可以理解为给服务器安装软件,只有部署了客户端才能访问到要访问的内容2、客户端 只能由客户端发出请求https://128.10.10.12:8080/qqip地址 + 端口号 + 项目IP地址找到服务器 + 服务器软件监听端口 + 同一个端口下可...…
-
12、优化和重构技巧
目录 优化和重构技巧 总结优化和重构技巧通过前面两篇,MVC转MVP的介绍,我们总结一些优化和重构代码的技巧一 事不过三1.大段重复的代码出现了三次或以上提取成一个公共的方法,这一点是最常见也最容易做到的,只要在平时的编码过程中养成这种习惯,对于出现过三次以上重复代码段,提取成一个公共方法。2.一个类的职责有三种或以上通过合理分层的方式,减少职责这一点在MVP的例子中已经阐述地比较清楚了,通过职责的分层,上层持有下层,下层通过接口与上层通讯。其实这也是MVP模式的本质。3.同类的if/...…
-
11、MVP
目录 MVC模式的问题 MVP模式 总结MVC模式的问题下图是比较标准的MVC模式,也是苹果官方推荐的架构模式。 Model层用来表示实体类,View层负责界面展示和传递UI事件,Controller层负责大部分的业务逻辑。 除此之外,对一部分公共的可复用的逻辑,我们抽象出Service层,提供给Controller使用,另外网络层也独立出来。下图比较清楚地展示了整体架构 根据上篇对MVC模式的介绍,网络层,公共服务,持久化,也可以放在Model层.MVC架构作为苹...…
-
10、MVC
参考:iOS MVC详解本想写一篇关于MVC的文章,发现了上边这篇,摘抄过来,方便阅览目录 MVC的理想模型 MVC在iOS里面的实现 iOS的MVC各层职责 MVC中M层实现的准则 MVC优缺点MVC的理想模型从字面意思来理解,MVC 即 Model View Controller(模型 视图 控制器),是 Xerox PARC 在 20 世纪 80 年代为编程语言 Smalltalk-80 发明的一种软件设计模式,至今已广泛应用于用户交互应用程序中。其用意在于将数据与视图...…
-
9、Observer
参考:观察者模式目录 观察者模式 代码实现观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。主要解决了:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。关键代码:在抽象类里有一个 ArrayList 存放观察者们。可以使用观察者模式创建一种链式触发机制,需要在系统中创建一个触发链,A对象的行为将影响B对象,B对象的行为将影响C对象……...…
-
8、Decorator
参考:装饰器模式目录 装饰器模式 代码实现装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能...…
-
7、Mediator
参考:设计模式入门——中介者模式(mediator) 参考:设计模式之中介者模式(调停模式)目录 中介者模式 代码实现 总结中介者模式中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。应用实例:1、中国加入 WTO 之前是各个国家相互贸易,结构复杂,现在是各个国家通过 WTO 来互相贸易。 2、机场调度系统。 3、MVC 框...…
-
6、Facade
参考:JAVA设计模式之门面模式(外观模式) 参考:JAVA设计模式之门面模式(外观模式)目录 举一个例子 门面模式 代码实现举一个例子现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其”分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。首先病人必须先挂号,然后门...…
-
5、Strategy
参考:Java设计模式-策略模式实际应用场景 参考:设计模式应用之策略模式目录 策略模式 实际应用 策略模式实现策略模式当业务需求涉及到很多的分支逻辑时,过多的if-else或者过多的switch代码显得很不简洁,而且当我们修改某一分支逻辑时,要改动的很多,比如现在某一分支不要了,就要把这个if条件删除掉,这样是很不好的,这个时候,我们想到了策略模式,替换掉过多的if-else或者switch语句。策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自...…