【协议】TCP/IP

这篇博客详细介绍了TCP/IP协议,包括其背景历史、TCP/IP的基本概念、TCP的报头结构、三次握手与四次挥手的过程,以及IP地址的分类和网络通信相关技术。还探讨了TCP的可靠性与UDP的不可靠性,以及OSI模型与TCP/IP的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速介绍部分

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/IPIP,ICMP.TCP,UDP,HTTP,TELNET,SNMP,SMTP...等协议的统称,用于:互联网、局域网;
  • IPX/SPX(NetWare)IPX,SPX,NPC...,用于:个人电脑局域网;
  • AppleTalkDDP,RTMP,AEP,ATP,ZIP...,用于:Apple公司现有产品局域网;
  • DECnetDPR,NSP,SCP...,用于:前DEC小型机;
  • OSIFTAM,MOTIS,VT,CONP,CMIS/CMIP,CLNP...
  • XNSIDP,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)PSHpush标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
    4)RST重置连接标志,用于重置:由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。
    5)SYN同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。
    6)FINfinish标志,用于释放连接
    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.0255.255.255.255
有五类,从A到E;
A:1.0.0.0126.255.255.255 可用:每个网段可用主机数:16777214
B:128.0.0.0191.255.255.255 可用:每个网段可用主机数:65534
C:192.0.0.0223.255.255.255 可用:每个网段可用主机数:254
D:224.0.0.0239.255.255.255 用于组播
E:240.0.0.0255.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实现必不可少的部分;

IP

ARP & RARP

ICMP

UDP

TCP

路由选择协议

客户服务器模型

BOOTP & DHCP

DNS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值