计算机网络-传输层

传输层

TCP和UDP

TCP 传输控制协议

  • 可靠传输,需要将传输的文件分段,客户端和服务器端建立一个会话,直到数据传输完成。
  • 流量控制功能
  • qq传文件
  • 查看会话:netstat -n
  • 查看建立会话的进程: netstat -nb
  • TCP+端口 标识一个应用层协议

UDP 用户数据报协议

  • 不可靠传输,一个数据包就能够完成数据通信,不需要分段,不需要建立会话,无流量控制
  • 域名解析DNS
  • qq聊天
  • 屏幕广播,多播,视频,语音

常见应用层协议所使用的的端口

  • http:TCP+80
  • https:TCP+443
  • RDP: TCP+3389
  • FTP: TCP+21
  • SMTP: TCP+25
  • telnet: TCP+23
  • SQL: TCP+1433
  • DNS: UDP+53
  • POP3: TCP+53

服务和应用层协议之间关系

  • 客户端使用IP地址定位服务器 使用目标端口定位服务

  • 可以在服务器网卡上设置只开放必要的端口 实现服务器网络安全

  • 传输层功能

    • 为应用程序提供了逻辑通讯
  • 端口号只具有本地意义,标志苯己酸应用层中的各进程,不同计算机的端口号没有关系

UDP

无连接,尽可能交付,没有拥塞控制,适合多媒体通讯,支持一对一,一对多,多对一,多对多,首部开销小,只有8个字节

首部

  • 源端口 2byte
  • 目标端口 2byte
  • 长度 2byte
  • 检验和 2byte

TCP

首部

  • 20字节的固定首部

    • 源端口 2字节

    • 目标端口 2字节

    • 序号 4字节

      • 第一个字节是整个文件的第多少个字节
    • 确认号

      • 返回一个确认号,该确认号是下一个要接收的起始号
    • 数据偏移

      • 记录从多少开始是首部,多少开始是数据部分
    • URG

      • =1 表示该包很紧急,不排队直接传
    • ACK

      • 确认号,为序列号+1
    • SYN

      • 双方同步传建立连接的时候标记为1,建立连接完毕之后重置为0
      • =1发起会话的数据包
  • 可变部分

TCP可靠传输的实现

  • ARQ

    • 超时重传

      • TCP每发送一个报文,就对这个报文段设置一次计时器,只要计时器的重传时间到了但还没有收到确认,就要重传这次报文段。重传时间略大于RTT。
    • 信道利用率低

      • U=TD/(TD+RTT+TA)
  • 连续ARQ

    • 维持一个滑动的发送窗口
    • 信道利用率高
  • 以字节为单位的滑动窗口技术

    • A发送端先将要发送的数据包放到发送缓存中,B接收端在建立连接的时候告诉A自己滑动窗口的大小,A此时根据B的滑动窗口大小来设定发送端的滑动窗口大小(A<=B)在没有达到滑动窗口大小的时候A都可以用一直发。
    • 出现丢失的包,SACK告诉A哪些数据包是丢失的,A只发送丢失的部分包

TCP的流量控制

  • 解决通信两端处理速度不一致的问题
  • 接收端告诉发送端 接收端滑动窗口的大小来实现的

TCP的拥塞控制

  • 网络中所有的计算机如何防止网络堵塞,拥塞的条件:对资源需求的总和>可用资源。吞吐量:每秒钟所有机器通过网络产生的流量。发现网络中出现拥塞趋势,自动降低发包的速度。

  • 慢启动算法

    • 拥塞窗口最开始是1,以2倍速的速度增长,直到达到ssh后,从超过ssh的值开始逐渐+1,出现丢包,之后窗口变为1
  • 拥塞避免

    • 拥塞窗口最开始是1,以2倍速的速度增长,直到达到ssh后,从ssh的当前值开始逐渐+1,加法增大,直到出现丢包,窗口大小改为1
  • 快重传

    • 接收端发现丢包后,连着发三个确认让发送方重传丢失的包
  • 快恢复

    • 从连续收到三个重复的确认转入拥塞避免
    • 收到三个重复确认执行快重传,快恢复到ssh的值开始加法增大,与快重传配套使用
    • ssh=Min[rwnd(接收窗口),cwnd(拥塞窗口)

TCP的运输连接管理

  • 三个阶段

    • 建立连接

      • 三次握手建立TCP连接

        • 客户–>服务器 SYN=1,ACK=0,seq=x

        • 服务器–>客户端 SYN=1,ACK=1,seq=y,ack=x+1

        • 客户–>服务器 ACK=1,seq=x+1,ack=y+1

          • 再次确认 避免了多次建立连接之后,后收到的包计算机不认可,另一台计算机仍在等待
          • 两边的机器都编程established的时候才可以确定双方的连接建立成功
    • 数据传送

    • 连接释放

      • 数据传输结束后,通信的双方都可释放连接,现在A应用的进程先向其TCP发出连接释放的报文段,并停止再发送数据,主动关闭TCP连接

      • 客户–>服务器 FIN=1 ,seq=u

      • 服务器–>客户端 ACK=1,seq=v ack=u+1

        • 数据传输
      • 服务器–>客户端 FIN=1,ACK=1,seq=w,ack=u+1

      • 客户端–>服务器 ACK=1 seq=u+1,ack=w+1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值