2019-11-03-ch09传输层

传输层

categories: 思科1

传输层协议

传输层原理

  • 传输层负责在应用之间建立临时会话和传输数据. 从源主机的某程序生成数据传输到目标主机.
  • 会话: 源程序和目的程序传输的每个数据集称为一个会话
  • 传输层负责跟踪会话, 把数据段切块加上报头, 重组数据段, 用端口号标识应用程序
  • 多路复用: 把数据切成很小的块, 交替传输, 避免一个很大的块占用带宽
  • TCP: 传输控制协议, 可靠且功能齐全, 确保所有数据到达目的设备, 报头复杂, 延迟高. 数据包需要确认收到, 没有确认, 会重发
  • UDP: 用户数据报协议, 对可靠性要求不高的传输, 精简.

TCP功能

  • 建立会话: 在源设备和目的设备之间协商并建立永久连接(或会话), 协商转发流量, 通信数据得到管理.
  • 可靠传输: 丢失补发
  • 同序船速: 用序列号编排数据段
  • 流量控制: 接收方处理能力有限的时候, 会请求原应用程序降低数据流速

TCP报头

1572777711842

UDP功能

  • 数据按接收顺序重构
  • 丢失数据不重传
  • 不建立会话
  • 不告知发送方资源可用性的信息

UDP报头

1572777792817

端口号

端口号用来表示会话

  • 源端口号由发送方设备动态生成
  • 目的端口常常是固定的
    • POP3–110
    • HTTP-80
    • IM-531
  • IP+端口组成了套接字
  • 一个程序对应一个端口

端口号分类

  • 公认端口0-1023, 用于固定的服务
  • 注册端口1024-49151, 用于用户选择安装的一些应用程序
  • 动态/私有端口49152-65535, 在开始连接服务时由客户端操作系统动态分配 , 在通信期间识别客户端应用程序

netstat

查看活跃的TCP连接

TCP和UDP

TCP通信进程

三次握手的消息都是在TCP报头的控制位中.

1572778713690

ACK-确认字段有效, =收到字节数+1

SYN-同步序列号

FIN-发送方不再发送数据

  • 建立连接-三次握手

    • A发送SYN(SEQ=100, CTL=SYN), B接收SYN,
    • B发送SYN(SEQ=300, ACK=101, CTL=SYN&ACK), ACK, A接收SYN, ACK
    • 建立(SEQ=101, ACK=301, CTL=SYN&ACK)
  • 终止会话

    • A发送FIN, B接收FIN
    • B发送ACK, A接收ACK
    • B发送FIN, A接收FIN
    • A发送ACK, B接收ACK

TCP可靠性和流量控制

  • 使用序列号ISN标识数据段先后顺序
  • ISN从一个随机的数开始(防止攻击), 发送一个字节增加1,
  • 窗口表示目的设备一次能处理的字节数, 在三次握手期间确定. 发送数据总大小不能超过窗口.
  • 滑动窗口
    • A向B发送数据, 假设窗口大小为N. A发送了X个数据(X<N)
    • B报告A他已经接收了m个数据
    • 窗口大小调整为m+N, 这样A就可以多发送m个数据
    • 这种方式可以保证A发送的数据永远在B处理范围以内
  • 流量控制
    • 如果大量丢包, 发送端会减少发送的字节数, 直到收到正常数量的确认信息

UDP低开销和可靠性

  • 按照接收的顺序重组数据报
  • UDP客户端进程从可用端口号动态挑选一个端口, 作为会话的源端口

使用TCP的应用

  • FTP
  • SMTP
  • HTTP
  • Telnet

使用UDP的应用

流媒体, 简单的请求和应答, 不必高可靠的应用

  • SNTP
  • TFTP
  • DNS
  • DHCP
  • VoIP
  • IPTV

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 tianyilt@qq.com

文章标题:2019-11-03-ch09传输层

本文作者:tianyilt

发布时间:2019-12-07, 23:40:55

最后更新:2019-12-10, 08:53:01

原始链接:http://yoursite.com/2019/12/07/%E6%80%9D%E7%A7%911/2019-11-03-ch09%E4%BC%A0%E8%BE%93%E5%B1%82/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏