计算机网络基础

计算机网络基础

结合着各种资料本人把计网的内容整理了一下,可能不是特别的全面,若有错误还请指正,同时也是作为复习的资料,有错误会尽快的更新。

OSI七层模型

osi(open system interconnection reference model)开放式系统互联通信参考模型

image-20210815164215737

名称 作用
物理层 物理设备的传输标准,比如网线的接口类型、光纤的接口类型等等。 物理设备之间通过比特流形式进行传递(将01数据转换成电流强弱来进行传输,到达目的地后再转换成0,1)。比特:二进制 0101
数据链路层 将物理层中的数据进行接受,数据存储的地址位于MAC(物理地址)中,这一层通常称作。这一层工作的设备是交换机,数据通过交换机来传输。
网络层 将帧中的数据进行IP地址的封装与解封装。这层工作的设备是路由器,这层的通常称作数据包
传输层 定义了数据的传输协议和端口号。这一层通常称为。 TCP(传输控制协议)和UDP(用户数据报协议)就是非常典型的传输协议。TCP特点:传输效率低,可靠性强(不会丢数据),传输数据量大UDP特点: 传输效率高,可靠性低(容易丢数据),传输数据量小。
会话层 通过传输层(端口号:传输端口和接受端口)建立数据传输通路。主要在系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者主机名)
表示层 数据的表现形式,比如将传入的数据进行解释加密与解密压缩与解压缩等等
应用层 一些终端的应用,面向用户的接口,比如:FTP(文件传输)、WEB(浏览器)、QQ。

osi模型终究是一个理想中的模型,具有通用性,然后现实中并不是按照七层模型来设计的,在osi的基础上有了新的模型产生TCP/IP四层模型

TCP/IP模型

image-20210815164244005

image-20210809095956516

TCP/IP模型将osi模型进行了整合,最终分成了4层模型。

TCP/IP协议不是TCP和IP这两个协议的合成,而是指因特尔网整个TCP/IP协议族

TCP/IP四层从下往上依次是:网络接口层(物理层(比特)+数据链路层(帧))、网络层、传输层、应用层(应用层+表示层+会话层

名称 作用
网络接口层 网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互联的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参与模型的数据链路层。
网络层 主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)
传输层 为应用层体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。使源端和目的端机器上的对等实体可以进行会话,定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP).TCP 是面向连接的协议,UDP 是面向无连接的不可靠传输的协议。
应用层 包含所有的高层协议,这些协议为用户提供所需要的各种服务。例如:FTP(文本传输协议)、SMTP(电子邮件传输协议)、DNS(域名服务)、HTTP(超文本传送协议)、TELNET(虚拟终端协议)等等

TCP三次握手和四次挥手

先来简单说一说TCP三次握手,再说之前举一个例子方便理解。

image-20210815164351775

TCP的握手就和两军之间通讯类似。

蓝军A向蓝军B发送明早5点一起攻打红军的消息,消息发送完毕后,蓝军B接受消息后,需要给蓝军A发送一个消息告诉蓝军A自己已经接到消息了,蓝军A在接收到蓝军B返回的消息后再给蓝军B发送一次消息说你发来的信息我已经接受到了,这下确保了两军都能够知道对方接受到了消息,不会影响到作战。

说明一次计划的执行需要三次的交互,才能保证计划顺利执行。

先看看TCP中的结构组成

fb1a4e4988fa28ce8395d61329ebbd47.png

  • 源端口号: 标识源主机ip地址的一个应用进程。
  • **目标端口号:**标识目标主机ip地址的一个应用进程。源端口号+目标端口号确定了一个TCP连接开始和结束的地方
  • 顺序号 seq:用来标识从TCP源端口向TCP目标端口发送的数据字节流,标识在报文段中第一个数据字节的顺序号。如果将字节流看作是两个应用之间的单向流动,则TCP用顺序号对每个字节进行计数。序号是32bit的无符号数,序号到达2的32次方-1后又从0开始。当建立一个新的连接时,SYN(控制位:同步序号)标志位1。
  • 确认号 ack:表示发送确认的一端所期望收到的下一个顺序号。因此,确认序号应当是上次已成功收到数据字节顺序号+1只有ACK(控制位:确认号有效标志)为1时确认号才能够生效。TCP 为应用层提供全双工服务,这意味数据能在两个方向上独立地进行传输。因此,连接的每一端必须保持每个方向上的传输数据顺序号
  • **TCP报头长度(首部长度):**指明数据从哪里开始。
  • **保留位:**保留给将来使用,一般情况下置为0.
  • 控制位:TCP报头中有6个标志bit,它们中的多个可同时被设置为1
    • **URG:**为1表示紧急指针有效,0表示无效。
    • **ACK:**为1表示确认号有效,0表示无效。
    • **PSH:**为1表示带有PUSH标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。
    • **RST:**用于复位由于主机崩溃或其他原因而出现错误的连接。
    • **SYN:**同步序号,为1表示连接请求,用于建立连接和使顺序号同步
    • **FIN:**用于释放连接,为1表示发送发已经没有数据发送,即关闭本方数据流。
  • 窗口大小:数据字节数,表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口大小
  • **校验和:**此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。
  • 紧急指针:只有当 URG 标志置 1 时紧急指针才有效。TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。
  • 选项:最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size) 。每个连接方通常都在通信的第一个报文段(为建立连接而设置 SYN 标志的那个段)中指明这个选项,它指明本端所能接收的最大长度的报文段。选项长度不一定是 32 位字的整数倍,所以要加填充位,使得报头长度成为整字数。
  • 数据: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。
image-20210815164432004

三次握手过程

  1. 第一次握手:客户端主动向服务器发起的请求,服务器被动接收,这个过程客户端携带两种参数,分别是SYN、seq

    SYN:TCP包头中控制位中的同步序号,SYN= 1,表示建立连接请求。

    **seq:**顺序号,客户端发给服务端的数据字节流,seq用来标识和记录该数据,seq = x。

  2. 第二次握手:服务器接受到客户端的请求后,会返回四个参数,分别是SYNseqackACK

    **SYN:**SYN=1 服务器向客户端建立连接请求

    **ack:**确认号,ack = x+1,表示已经接收到来自客户端的请求,用来告诉客户端。

    ACK:位于控制位中,用来表示ack是否有效的标志。ACK =1

    seq:服务器端返回给客户端数据,就来标识服务器端发送的数据字节流,seq = y

  3. 第三次握手:客户端接受到服务器返回的数据,通过ack来判断第一次握手发送数据是否成功。若发送成功,客户端会返回给服务器三个参数,分别是:ackACKseq

    **ACK:**确保ack有效

    **ack:**ack = y+1,表示已经接收到服务器发来的请求,用来告诉服务器端

    **seq:**seq = x +1,服务器端收到客户端发送的seq值后,成功建立连接

img

  • 第一次握手:client syn 2322326583 —> server
  • 第二次握手:server syn 3573692787, ack 2322326583 + 1 —> client
  • 第三次握手:client ack 3573692787 + 1 –>server

客户端和服务器端建立连接进行三次握手的过程,归根到底:保证双方都能够知道自己和对方发送和接收的过程是正常的

四次挥手

客户端到服务器端的连接过程是三次,客户端请求服务器端断开连接过程是四次。

原因:TCP连接时全双工(数据可以同时在两个方向上传递)所以进行关闭时每个方向上都是单独关闭的,单方向上的关闭就叫做半关闭。

客户端<--------------->服务器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值