快速介绍部分
https://www.bilibili.com/video/av15353565?from=search&seid=12529760595568536358
TCP/IP是现在使用最广泛的协议;
背景和历史
网络技术最早用于军方,如GPS是美军用来为海陆空定位的;
1970s:分组交换技术
说白了,就是当其中某一个节点发生故障后,不会影响整个网络的通信;
因特网始于1969年的美国;
是美军在ARPA(阿帕网,美国国防部研究计划署)制定的协定下,首先用于军事连接,后将美国西南部的UCLA、斯坦福大学研究学院、UCSB(加州大学-圣塔芭芭拉)和犹他州大学的四台主要的计算机连接起来;这个协定由剑桥大学的BBN和MA执行,在1969年12月开始联机;
基础1
1980s:互联多种网络的技术出现
大型计算机、小型计算机可以互相通信;
Windows系统的出现:
他与网络的结合,让普通人可以更贴近网络;
如何实现网络信息通信?
协议
协议 Protocol
:
是计算机与计算机之间通过网络实现通信时实现达成的一种约定,这种约定使不同厂商的设备、硬件、系统之间,只要遵循相同的协议,他们就能够实现相互的通信;若不遵守相同的协议,各个设备之间就无法进行通信;
协议举例:
- TCP/IP:
IP,ICMP.TCP,UDP,HTTP,TELNET,SNMP,SMTP...
等协议的统称,用于:互联网、局域网; - IPX/SPX(NetWare):
IPX,SPX,NPC...
,用于:个人电脑局域网; - AppleTalk:
DDP,RTMP,AEP,ATP,ZIP...
,用于:Apple公司现有产品局域网; - DECnet:
DPR,NSP,SCP...
,用于:前DEC小型机; - OSI:
FTAM,MOTIS,VT,CONP,CMIS/CMIP,CLNP...
- XNS:
IDP,SPP,PEP...
,用于:施乐公司网络;
举例:
有ABC三人;
A只会说中文,B只会说英文,C两种语言都会说;
把语言当作协议;
比聊天当作通信;
把说话内容当作数据;
A - B:语言不通,无法交流;协议不通,双方无法传递数据;
A - C:都用中文,可以沟通;协议相同,数据传输成功;
基础2
OSI参考模型:7层
分层的优点:
1.人们可以很容易地讨论和学习协议的规范细节;
2.层间的标准接口方便了工程模块化;
3.创建了一个更好的护连环境;
4.降低了复杂度,使程序更容易修改,产品开发的速度更快;
5.每层利用紧邻的下层服务,更容易记住各层的功能;
TCP
TCP 的可靠性含义: 接收方收到的数据是完整, 有序, 无差错的。
UDP 不可靠性含义: 接收方接收到的数据可能存在部分丢失, 顺序也不一定能保证。
TCP都在传输层;
-
提问:画出TCP的报头
(报头最大长度为60)
(端口号:用来标识同一台计算机的不同的应用进程) -
1.【
源端口
】:报文的【返回地址】。 -
2.【
目的端口
】:接收方的【应用程序接口】。
TCP报头中的【源端口】号和【目的端口】号同IP数据报中的【源IP】与【目的IP】唯一确定一条TCP连接。
(序号和确认号:是TCP可靠传输的关键部分)
-
3.【
序列号
】是本报文段发送的【数据组】的【第一个字节的序号】。
在TCP传送的流中,每一个字节一个序号。
e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。
所以序号确保了TCP传输的【有序性】。 -
4.【
确认号
】,表明该序号【之前的所有数据】已经【正确无误的收到】。
确认号只有当ACK标志为1
时才有效。比如建立连接时,SYN报文的ACK标志位为0。 -
5.【
数据偏移
】/【报头长度
】:20-60
表示数据开始的地方离TCP段的起始处有多远。
由于首部可能含有可选项内容,因此TCP报头的【长度不确定】,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。
报头长度(首部长度)也叫数据偏移,是因为报头长度实际上指示了【数据区】在【报文】段中的【起始偏移值】。 -
6.【
保留
】:为将来定义新的用途保留,一般置0
。 -
7.【
控制位
】:URG ACK PSH RST SYN FIN,共6个,每一个标志位表示一个控制功能。
1)URG
:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。
2)ACK
:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
3)PSH
:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
4)RST
:重置连接标志,用于重置:由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。
5)SYN
:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。
6)FIN
:finish标志,用于释放连接
1
表示发送方已经没有数据发送了,即关闭本方数据流。 -
8.【
窗口
】:
滑动窗口大小,用来告知【发送端】【接受端】的【缓存大小】;
以此控制发送端发送数据的速率,从而达到【流量控制】;
窗口大小时一个16bit字段,因而窗口大小最大为65535。 -
9.【
校验和
】:
【奇偶校验】,此校验和是对【整个 TCP 报文段】,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。
由发送端计算和存储,并由接收端进行验证。 -
10.【
紧急指针
】:
只有当 URG 标志置1
时紧急指针才有效。
紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。
TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。
————————————————————————————————————————
建立TCP需要三次握手,而断开连接需要四次握手;
————————————————————————————————————————
- 提问:为什么TCP建立连接需要三次握手?
TCP是可靠的传输控制协议,三次握手能保证数据传输的可靠和高效。
《计算机网络》一书中其中有提到,三次握手的目的是“为了防止已经失效的连接请求报文段突然又传到服务端(二次握手),因而产生错误”
————————————————————————————————————————
- 提问:为什么TCP断开连接需要四次握手?
- 提问:为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
- 提问:为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
答:
MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。
虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可能最后一个ACK会丢失。
所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。
https://blog.youkuaiyun.com/su_bao/article/details/80845246
需要仔细阅读:https://blog.youkuaiyun.com/Y0Q2T57s/article/details/82880910
————————————————————————————————————————
- 提问:如果已经建立了连接,但是客户端突然出现故障了怎么办?
TCP有一个【保活计时器】
显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。
服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个【探测报文段】,以后每隔75分钟发送一次。
若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
————————————————————————————————————————
- 提问:
————————————————————————————————————————
- 提问:
————————————————————————————————————————
- 提问:
————————————————————————————————————————
- 提问:
————————————————————————————————————————
- 提问:
————————————————————————————————————————
- 提问:
————————————————————————————————————————
- 提问:
————————————————————————————————————————
- 提问:
————————————————————————————————————————
IP基础
在网络层
为什么要使用IP地址:
1.可以唯一标示网络中的每台设备(就像身份证号码);
2.每台主机(计算机、网络设备、外围设备)必须有唯一的标示;
IP地址的分类:根据用途和安全性级别的不同分成两类
1.公有IP地址
在Internet中使用,可以在Internet中随意访问;
2.私有IP地址
只能在内部网络中使用,只有通过代理服务器才能与Internet通信;
IP地址的范围:
1.0.0.0
到 255.255.255.255
有五类,从A到E;
A:1.0.0.0
到 126.255.255.255
可用:每个网段可用主机数:16777214
B:128.0.0.0
到 191.255.255.255
可用:每个网段可用主机数:65534
C:192.0.0.0
到 223.255.255.255
可用:每个网段可用主机数:254
D:224.0.0.0
到 239.255.255.255
用于组播
E:240.0.0.0
到 255.255.255.255
用于保留
其中,127
不存在,因为他要保留用于环回测试的A类地址,不能将其分配给网络;
https://www.bilibili.com/video/av23038786/
目录:
引言
OSI模型和TCP/IP(基础)
底层网络技术 (基础)
IP编址 (IP编址技术)(重点)
构成子网和超网(IP编址技术)(重点)
IP (TCP/IP协议介绍)(重点)(网络层)
ARP & RARP (TCP/IP协议介绍)(重点)(网络层)
ICMP (TCP/IP协议介绍)(重点)(网络层)
UDP (TCP/IP协议介绍)(重点)(传输层)
TCP (TCP/IP协议介绍)(重点)(传输层)
路由选择协议 (路径查找和发现)
客户服务器模型 (应用层)
BOOTP & DHCP (应用层)
DNS (应用层)
引言
本章主要介绍Internet知识;
协议 Protocol
一组控制数据通信的规则;
标准 Standard
一致同意的规则;
Internet标准:RFC
OSI模型和TCP/IP
OSI参考模型:(是模型,不是协议;参考:作为指导,不太实用)
ISO标准:Open System Interconnection 开放系统互连;Reference Model 参考模型;
目的:是两个不同的系统能够通信,而不需要改变底层的硬件或软件逻辑;
(注意:ISO是一个组织;OSI是他们制定的一个模型)
(注意:OSI不是协议,是网络体系结构的概念模型)
实际实现网络通信的时候,不一定按照OSI模型来做;
但是设计阶段需要参考他;
底层网络技术
IP编址
IP编址技术虽然和TCP无关,但他是TCP实现必不可少的部分;
构成子网和超网
IP编址技术虽然和TCP无关,但他是TCP实现必不可少的部分;