`计算机网络`分类下的文章

计算机网络

LAN技术

广播网络链路

一个节点发送信号,多个节点接收信号,多个节点接收信号的状态有所不同细分成以下三个网络。

单工广播网络

单通道通信,在一个网络环境中,一个只能发送信息,不能接收信息。其它主机只能接收信息,不能发送信息。即单工广播网络

半双工广播网络

在一个网络环境中,存在双向网络通信,这些节点既能发送消息,也能接收消息,但同一时刻只能有单个节点在发送信息。即半双工广播网络

全双工广播网络

在一个网络环境中,存在双向网络通信,一个节点技能发送消息,也能接收消息,这些节点同一时刻既要能发送消息,也需要接收消息。即全双工广播网络。比如说大合唱活动。

点对点网络链路

Read More

默认配图
计算机网络

TCP与UDP

进程与进程通信

在数据链路层,数据之间通过点对点的方式进行传输(局域网)。在网络层,数据通过主机对主机方式进行通信,IP数据包的发送与接收。在传输层,进程或应用程序通过端口进行通信,也叫进程与进程之间的通信,TCP与UDP协议就是在这一层次工作的。

端口和套接字

端口是标识指定应用程序的一种方式,用16位的bit表示,共有 2^16-1=65535 个端口总数。端口分为已定义端口和临时端口

  1. 已定义端口:
    • 小于255的端口是为公共应用保留的
    • 255~1023之间的端口被分配给一些公司的市场应用
    • 大于1023的端口未定义。
  2. 临时端口
    • 客户端与服务器连接的时候,主要客户端需要,运行客户端进程的主机就会给客户端临时分配一个临时端口。
      套接字(socket)是我们在网络中可以命名和寻址的通信连接点(端点)。通常情况下,一台主机采用典型的系统配置作为服务器,其它主机作为客户端。客户端连接服务器,并与之交换信息,最后断开连接,相当于螺帽一样的存在。
  3. 套接字连接类型
    • 面向连接(TCP)7
    • 无连接(UDP)

UDP

  1. UDP 工作流程:
    • 将上层数据封装,填充上UDP头部,发送给下层协议(IP协议),
  2. UDP不做什么:
    • 发送数据前建立连接
    • 检测数据的丢失并重传
    • 保证接受数据的顺序与发送数据的顺序一致
    • 提供拥塞处理机制,以及两个应用之间的流控制机制
  3. UDP消息格式
    UDP数据报分为两个部分:UDP头部和UDP数据区域。头部数据的组成如下:
    • 源端口号:16位,表明发送UDP数据的源进程的端口
    • 目标端口号: 16位,表明接收UDP协议的目标进程的端口
    • 长度:16位,表明用户数据报的长度,以字节计。包括头部长度。
    • 校检和:一个可选的16位字段,是伪IP头部,UDP头部,UDP数据的反码和(异或运算)。
      数据区域: 长度可变,被封装在上层消息中被发送出去。

TCP

  1. TCP连接的建立(三次握手)
    这里的客户端个服务端的概念是相对的。客户端有可能是服务端,服务端也有可能是客户端。
    TCP的建立是通过元数据SYN+ACK来确认连接信息的。 SYN元数据用于标识报文,以方便将报文重组。ACK元数据表示的是一个“确认回复”消息。值和接收到的syn值有关,一般是+1的关系。为了简单,我们将SYN报文的序列号称作SEQ
    1. 客户端发送SEQ=J,ACK=0给服务端请求建立连接,如果超过一定时间没收到服务端的响应(计时器超时),会重新发送请求。
    2. 服务端收到请求,回复SEQ=K(k是随机值),ACK=J+1表示接收到请求,同意建立连接。
    3. 客户端发送 SEQ=J+1,ACK=K+1,确认号ACK=K+1表示客户端已经接收到服务端的响应,开始建立连接
  2. TCP连接的四次挥手
    TCP建立一次连接需要三次握手,而结束一个连接却需要四次,这是因为TCP的半关闭状态决定的(一端处于开启状态,一端处于关闭状态)。由于TCP是全双工通信,所以两端都要关闭才能算是关闭。
    1. 客户端首先调用关闭,发送FIN码给服务端,假设这里的FIN 值为M.
    2. 服务端接收到带有FIN码的请求,执行被动关闭,并回复确认信息给客户端,此时ACK的值为M+1.同时传输给用户一个结束文件,这是因为接收到FIN码意味着服务端不再向客户端发送文件。
    3. 服务端会请求客户端进行关闭连接,发送FIN码的请求,这里假设值为N。同时会开启一个计时器,若超时,没收到客户端发送的确认信息,会自动关闭连接
    4. 客户端同意服务端的关闭确认,回复ACK=N+1给服务端同意连接关闭。
      当客户端发送的FIN码,服务端没收到,会引发客户端重传,当经过N次重传失败的时候,客户端就会放弃重传,关闭连接。但当发送者关闭连接,服务端并不知道,所以服务端会处于完全活动状态,这就导致了半关闭状态。为了避免这种问题,一种解决方案是,当服务端在指定的时间没接收到客户端发送的数据,就自动单方面关闭连接。那么这个半关闭状态问题就解决了。
  3. TCP头部数据格式

| 00~15 | 16~31|
| :—–: | :—–: | :—–:| | :—–: | :——: | :——–: | :—: | :—-: |
| 源端口号 | 目的端口号|
| 序号 |
| 确认号 |
| 4位头部长度 | 6位保留 | URG | ACK | PSH | RST | SYN | 窗口大小 |
| 校检和 | 紧急指针 |
| 选项 |
| 数据 |

Read More

默认配图
计算机网络

OSI模型和TCP/IP模型

协议栈

​ 协议栈是一整套完整的网络协议层次,它们一起协同工作,提供网络互联能。它被成为栈,是因为它一般被设计为等级层次结构,每一层都能支持上层通讯使用下层通讯。

​ 层次的数量因模型的不同而不同,TCP/IP 模型有5层(应用层,传输层,网络层,数据链路层和物理层)。OSI模型有7层(应用层,表示层,会话层,传输层,网络层,数据链路层和物理层)。

​ 两个设备间想正常的通讯必须拥有相同的协议栈,这样不同的操作系统之间的电脑才能够正常的通讯。

OSI模型

应用层

定义数据传输协议,例如文件传输用的是FTP还是HTTP

表示层

将应用层传输的数据转化成下层能理解的标准格式,同样的,表示层将接受自会话层的数据转换成应用层能理解的格式。

会话层

​ 一旦资料被转换成正确的格式,发送端主机必须与接收端主机建立一个会话。它主要负责建立、维持和终止与远端主机的会话。会话通常在应用程序间建立。属于软件层面的应用。

传输层

​ 传输层负责维持流控制。例如:windows操作系统上各个应用程序和自身都需要进行网络通讯,传输层提取来自不同程序的数据,并把他们整合为一个单独的数据流。

​ 传输层也负责错误检查和在必要时进行数据恢复。实质上,传输层确保所有的数据能从传输端主机发送到接收端主机。

网络层

​ 网络层决定数据如何到达接收者。它处理像寻址、路由和逻辑协议之类的工作。网络层在资源与目的主机之间创造逻辑路径,也叫虚电路,虚电路为每个数据包提供一条通往目的地的通道。网络层也负责它自己的错误处理,以及数据包的排序和拥塞控制。

​ 数据包的排序是非常重要的,因为许多协议限制了最大数据包的大小,当一个数据过大时,会将数据拆分成多个数据包,这时,网络层就会为每个数据包分配一个序列号。当接收端的网络层接收到数据时,就会检查数据包序列号,并重新组装数据,并检查是否有数据包遗失。

数据链路层

​ 数据链路层可以进一步分为两层,介质访问控制层(MAC)和逻辑链路控制层(LLC),MAC层通过它的MAC地址建立计算机在网络上的身份,MAC地址是硬件给网络适配器分配的地址,它是最终发送和接受数据包时使用的地址。LLC层控制帧同步,并提供一定程度上的错误检查机制。

物理层

​ 物理层是硬件上的规范,定义了什么是用于传输和接收数据的(硬件设备)。

OSI模型的工作原理

​ 数据从主机发送到接收端时,首先从应用层到物理层流动,这时候数据每流经一层都会附带对应层次的协议头,协议头是附加在数据开头处的一段信息,除了物理层不会。接收端接受的数据是自下而上流动的,从物理层到应用层,每一层都会读取对应协议头的信息,用来决定接收端每一层该如何处理接收的信息。读取完之后会去除掉对应层次的协议头信息。

​ 这些协议头根据它们收到的协议头的层次不同而包含不同的信息,但是,都能够告诉对等层许多重要的信息,包括数据包大小,帧和数据报。

​ 每一层的协议头和数据被称为数据包。虽然看起来有点混乱,但每一层给它的服务数据单元都有不同的名字,以下是OSI模型每一层的服务数据单元的通用名称。

层次 封装单元 设备 关键词/描述
应用层 数据 PC 为应用程序提供网洛服务
表示层 数据 为应用层提供标准化的接口
会话层 数据 主机之间的通讯
传输层 报文段 提供端到端的消息传递和数据恢复(可靠性)。按合适的顺序分隔/组传数据。
网络层 数据包 路由器 逻辑选址和路由选择、路由、报告传输错误。
数据链路层 网桥、交换机、NIC 物理地址和介质访问。
物理层 中继器、集线器、收发器 二进制信号传输和编码

TCP/IP模型

应用层

​ 是OSI参考模型中的应用层、展示层、会话层三者综合体。它定义了TCP/IP应用协议与传输层服务交互的主机应用程序接口如何使用网络。

​ 应用层包含所有高级协议: DNS,HTTP,Telnet,FTP,SNMP(简单网络管理协议),SMTP,DHCP(动态主机配置协议),RDP(远程桌面连接协议)。

传输层

​ 和OSI模型中的传输层功能对应,有错误重传和错误诊断功能,充当应用层的传输服务,使用的是TCP或者UDP协议。一个是基于连接的,一个是基于性能的。

互联网层

​ 和OSI的网络层对应,他们的目的是将数据包通过独立的路径选择传输到目的地。

​ 数据的路由和传输时互联网层的主要作用,也是这个体系的关键元素。这一层的主要协议有:IP(网络互连协议),ICMP(互联网控制消息协议),ARP(地址解析协议),RARP(逆地址解析协议)和IGMP(互联网组管理协议)。

网络接口层

​ 定义了数据传输的物理细节,和OSI的数据链路层和物理层功能类似。它主要包含的协议有:以太网、令牌环网、FDDI、X.25、帧中继等。

TCP/IP模型和OSI模型主要区别

  • OSI模型是参考实现,TCP/IP是OSI模型的具体实现

  • TCP/IP协议被认为是互联网发展的标准,而OSI模型则是一个通用的独立于具体协议的标准。

  • TCP/IP由四个等级层次组成,OSI有7层。

Read More

默认配图
返回顶部