计算机网络

发布于:2025-08-08 ⋅ 阅读:(19) ⋅ 点赞:(0)

结构

img

低三层为通信子网,负责数据传输,高三层为资源子网,相当于计算机系统,完成数据处理,传输层承上启下

OSI体系结构

img

TCP/IP体系结构

含一系列构成互联网基础的网络协议,是Internet的核心协议,被广泛应用于局域网和广域网

img

TCP协议:传输控制协议
  1. 传输层通信协议
  2. 基于TCP的应用层协议有HTTP、SMTP、FTP、Telnet和POP3

img

优点:数据传输可靠

缺点:效率慢

应用场景:对应的应用层协议

传输文件:HTTP、HTTPS、FTP等协议;传输邮件:POP、SMTP等协议;远程终端接入:Telnet协议

报文段格式

TCP虽面向字节流,但传送的数据单元=报文段

报文段=首部+数据 2部分

TCP全部功能体现在首部各个字段的作用

首部前20个字节固定,后面有4n个字节是根据需求而增加的选项
首部最小长度=20字节
  • TCP端口号

    • TCP连接需要四个要素确定唯一连接(源IP,源端口号+目的IP,目的端口号)
    • TCP首部预留两个16为作为端口号存储,IP地址由上一层IP协议负责传递
    • 端口范围是2的16次方(1024以下系统保留)
  • TCP序号和确认号

    • 序号seq:TCP通信过程中某个传输方向上的字节流的每个字节的序号,确认发送的数据有序
    • 确认号ack:TCP对上次seq序号做出确认号,响应TCP报文段,给收到的TCP报文段序号seq+1
  • TCP标志位

    • 每个TCP段都有一个目的,借助TCP标志位选项来确定,允许发送方或接收方指定哪些标志应该被使用,以便被另一端正确处理
    1. SYN:简写为S,同步标志位,用于建立会话连接,同步序列号;
    2. ACK: 简写为.,确认标志位,对已接收的数据包进行确认;
    3. FIN: 简写为F,完成标志位,表示我已经没有数据要发送了,即将关闭连接;
    4. PSH:简写为P,推送标志位,表示该数据包被对方接收后应立即交给上层应用,而不在缓冲区排队;
    5. RST:简写为R,重置标志位,用于连接复位、拒绝错误和非法的数据包;
    6. URG:简写为U,紧急标志位,表示数据包的紧急指针域有效,用来保证连接不被阻断,并督促中间设备尽快处理;

img

img

建立连接过程

TCP建立连接的三次握手,握手成功后建立一条TCP连接,即可传送应用层数据

因为TCP是全双工通信,所以通信双方的应用进程在任何时候都能发送数据
三次握手期间任何1次未收到对面回复都会重发
  • 请求建立连接
    • 客户端将TCP报文标志位SYN置为1,随机产生一个序号值seq=x,保存再TCP首部的序列号字段中,表明客户端打算连接的服务器端口,并将数据包发送给服务端,发送完毕后客户端进入syn-sent状态,等待服务器端确认
  • 针对客户端的SYN的确认应答并请求建立连接
    • 服务器端收到数据包后,通过标志位SYN=1知道客户端请求建立连接,服务端将TCP报文标志位SYN和ACK都置为1,ack=x+1,随机生成序号seq=y,将数据包发送给客户端以确认连接请求,服务端进入syn-rcvd状态
  • 针对服务端的SYN确认应答
    • 客户端收到确认后,检查ack是否=x+1,ACK是否=1,若是则将标志位ACK置为1,ack=y+1,seq=x+1,并将数据包发送给服务端,服务端检查ack是否=y+1,ACK是否=1,若是则建立连接成功,客户端和服务端进入established状态,完成三次握手,后可以开始传输数据
    • seq=x+1是因为客户端在第一次发送报文的时候,序号排到了seq=x,占用1个字节(SYN标志本身消耗一个序号),所以下一个客户端报文排到了seq=x+1

img

img

建立连接三次握手:

防止服务器端因接收了早已失效的连接请求报文,从而一直等待客户端请求,最终导致死锁,浪费资源

img

SYN洪泛攻击:

服务器,同时多个客户端发起连接请求,从而需进行多个请求TCP连接资源分配

服务端的TCP资源分配时刻=完成第二次握手时;而客户端的TCP资源分配时刻=完成第三次握手时
释放连接过程

通信结束后,双发释放连接,需要四次挥手

断开一个TCP连接时,需要客户端和服务端一共发送4个包以确认连接断开

在socket编程中,由客户端或服务端任一方执行close触发

TCP连接是全双工,每个方向都必须单独进行关闭

  • 客户端发送关闭连接报文段
    • FIN标志为1,请求关闭连接,停止发送数据,seq=u(=之前发送所有数据的最后一个字节序号+1),客户端进入fin-wait-1状态,等待服务器确认报文
  • 服务器发送确认报文
    • 收到FIN报文后,ACK=1,ack=u+1,自己的序号seq=v,然后服务器进入close-wait状态
    • 服务器通知上层应用程序,对方已释放连接,此时TCP处于半关闭状态,客户端没有数据要发送了
    • 服务器可以发送数据,客户端可以接收数据
  • 客户端接收确认报文
    • 收到服务器ACK报文后进入fin-wait-2状态
    • 还能收到来自服务器的数据,直到收到FIN报文段
  • 服务端发送关闭连接报文段
    • 服务端发送完所有数据后,向客户端发送请求关闭连接,停止发送数据
    • FIN和ACK标志为1,ack=u+1,自身seq=w,服务端进入last-ack状态,等待客户端确认报文
  • 客户端发送确认报文
    • 客户端接收到服务器的FIN报文段后,向服务器发送报文进入time-wait状态,等待2MSL(2倍的报文段最大存活时间),任何报文段在被丢弃前能在网络中存在的最长时间,之后进入closed状态
    • ACK=1,ack=w+1,自身seq=u+1
  • 服务器进入close状态
    • 服务器接收到客户端ACK报文后,不用等待,一般情况下服务器比客户端更早进入close状态

img

img

释放连接需要四次挥手:

保证通信双方都能通知对方需释放+断开连接(释放连接后,都无法接收/发送消息给对方)

img

为什么客户端关闭连接前要等待2MSL时间

time-wait状态的作用是什么

msl=最长报文段寿命

  • 保证客户端发送的最后一个连接释放确认报文能到达服务器,使得服务器能正常释放连接
  • 防止早已失效的连接请求报文,出现在本连接中
    • 客户端发送最后一个连接释放请求确认报文后,再经过2MSL时间,则可使本连接持续时间内所产生的所有报文段都从网络中消失

img

无差错传输:传输信道不出差错
UDP协议:用户数据报协议

传输层通信协议

无连接,不可靠,面向报文,无拥塞控制

  • 优点:速度快
  • 缺点:消息易丢失(特别是网络较差时)

img

应用层协议

TFTP、SNMP与DNS

域名转换:DNS协议;文件传输:FTP协议;网络管理:SNMP协议;远程文件服务器:NFS协议

报文段格式

UDP报文段:数据字段+首部字段

img

img

HTTP协议

img

计算机网络体系结构:计算机网络各层+其协议的集合

工作方式

HTTP协议采用请求/响应的工作方式


网站公告

今日签到

点亮在社区的每一天
去签到