zoukankan      html  css  js  c++  java
  • tcpip协议

      几个概念

    1.分层(我们使用四层模型更为贴合我们的实际网络)

    分层是为什么,其实和公司中职位是一样的,不同职位的人做不同的事情,然后不同职位的人合起来,一起完成了数据传输的事情。

    链路层  在这个层面,主机与主机的交互只认得硬件mac编号,并不认识IP。

    网络层 IP   ICMP  IGMP

    运输层 TCP  UDP

    应用层 Telnet远程登陆,FTP文件传输协议(我们这个端口和那个端口的连接是用来干什么的,传输文件?那么可以使用FTP。传输文本?那么可以使用HTTP。应用层就是实际上对具体的程序之间的交互功能进行定义的层。)

     2.  接口 互联网上的每个接口必须有一个唯一的 I P地址

    使用T C P / I P协议的应用程序通常采用两种应用编程接口( A P I):

    s o c k e tT L I(运输层接口:Transport Layer Interface)。

    3. 封装 T C P传给I P的数据单元称作 T C P报文段或简称为 T C P段(T C P s e g m e n t)。 

     I P传给网络接口层的数据单元称作 I P数据报(IP datagram)。通过以太网传输的比流称作帧(Fr a m e )

     IP:网络协议

    一.基本概念

    所有的 T C PU D PI C M PI G M P数据都以I P数据报格式传输。IP的就像给网络上每个机器一个门牌号,网络层,你可以把它理解为邮件运输工,它的职能就是负责把一包东西,从这个门牌运输到另外一个门牌。

    不可靠(u n r e l i a b l e)的意思是它不能保证 I P数据报能成功地到达目的地。如果发生某种错误时,如某个路由器暂时用完了缓冲区, I P有一个简单的错误处理算法:丢弃该数据报,然后发送 I C M P消息报给信源端。任何要求的可靠性必须由上层来提供(如T C P)。

    无连接  I P数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是 A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此 B可能在A到达之前先到达。

    . 多路访问协议:
    a) ALOHA协议: 纯 ALOHA协议和 时隙 ALOHA协议
    b) 载波侦听多路访问协议 (CSMA):1-坚持式 CSMA、⾮坚持式 CSMA、p-坚持式 CSMA、
      带有冲突检测的 CSMA(CSMA/CD)
      CSMA/CA(避免冲突的 CSMA 协议):发送⽅先激发 RTS短帧,接收⽅收到后发送 CTS短帧,使接收⽅周围的站点在发送期间保持沉默避免冲突

    但同样存在面向连接的虚电路和无连接的数据包。

    二.路由算法

    对应网络上也存在自适应算法(动态路由,根据网络状态刷新路由表)和非自适应算法(静态路由,可靠)。

    Dijkstra最短通路算法,距离矢量DistanceVector算法,链路状态算法

    内部⽹关路由协议 ( IGP,也叫域内路由协议) :
    a) 路由信息协议( RIP):基于距离⽮量算法,例如 Bellman-ford 算法
    b) 开放最短路径优先协议( OSBF):基于链路状态算法,例如 Dijkstra 算法
     
    三.网络接口

    IPv4 头标格式 :
    a) 版本号 : 4bit,IPv4 填 4            b) 头标⻓度 :4bit,单位为 4 字节,范围 5-15,缺省值为 5
    c) 服务类型 (TOS):8bit ,0          d) 总⻓度 :16bit ,单位字节, 描述 IP 分组的总⻓, 包括头和数据, 最⼤ 65535 字节,
    e) 标识符 : 16bit,⽤于唯⼀标识分组       f) 标志 :3bit ,第 1 位未定义,第 2 位 DF 为 0 表示可分段,第 3 位 MF 为 1 表示还有分段
    g) 段偏移 : 13bit,单位为 8 字节 ,取值 0-8191  h) ⽣存期( TTL):8bit ,单位秒
    i) 协议 :8bit ,表示⾼层协议类型        j) 分组头校验 :16bit ,每 16 位相加,进位加到结果,最后取反
    k) 源 IP 地址 和⽬的 IP 地址 :各32bit
     

    网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有三个协议:

    地址解析协议 ARP(Address Resolution Protocol)

    网际控制报文协议 ICMP (Internet Control Message Protocol)

    网际组管理协议 IGMP (Internet Group Management Protocol)

    TCP传输层

    传输层相比于网络层最大的不同就是引入了端口的概念。网络层只管发送地址和目的地址。但是发送主机上有可能有多个程序和同一个接收主机进行传输数据,怎么区分这多个程序呢?就引入了端口的概念。

    传输层还有一个职能是定义发送方和接收方基本处理包的行为。上面说到网络层就相当于邮件运输工,它只负责把一包东西从一个地方放到另外一个地方,但是,这包东西是否送达了,送达之后接收方又有什么行为。这些都可以在传输层进行定义。注意,这里说的是可以,你也可以在传输层布不管这些,只做简单的基本封装四元组。你懂的,我说的就是UDP。

    ⽤户数据包协议( UDP):不可靠,⾼效. 常用于实时视频数据传播。单元称为数据报
    传输控制协议( TCP):传输的数据单元称为数据段
                                           数据流传输、可靠、全双⼯、流量控制、拥塞控制

     

    包的序号,用来解决网络包乱序(reordering)问题。

    Acknowledgement Number就是ACK——用于确认收到,用来解决不丢包的问题。

    Window又叫Advertised-Window,也就是著名的滑动窗口(Sliding Window),用于解决流控的。

    TCP Flag ,也就是包的类型,主要是用于操控TCP的状态机的。

    i. 源端⼝ /⽬的端⼝ :各 16bit
    ii. 序列号 /确认号 :各 32bit
    iii. 头标⻓度 :4bit ,单位是 4 字节
    iv. 保留 :6bit,置零
    v. URG:1bit ,指示紧急指针有效
    vi. ACK:1bit ,指示确认段有效
    vii. PSH:1bit ,告诉主机⽴即将数据段递交给应⽤进程
    viii. RST:1bit ,重新连接
    ix. SYN:1bit ,同步序列号,⽤于确认连接
    x. FIN:1bit ,⽤于释放连接
    xi. 窗⼝⼤⼩ :16bit,⽤于流量控制,指示确认后还可发送的字节数
    xii. 检验和 /紧急指针 :各16bit

     二、流量控制与滑动窗口

    三、TCP建立连接和关闭的三次握手

    client和server应该理解为发送方(客户端)和接收方(服务器)

    建⽴连接:三步握⼿
    a) 主机 1 向主机 2 发送序号 seq = x的连接请求 TPDU
    b) 主机 2 答应连接请求, ack = x, seq = y
    c) 主机 1 发送序列号 seq = x 的数据,并确认 ack = y
    TCP协议的状态机

    三. 拥塞阻塞 明明网络已经堵塞了,还一个劲地发送大量包,甚至重发,那么这个时候,大家都没得玩了。于是,TCP引入了拥塞窗口(cwnd)的概念。

    流量控制:根据接收⽅的缓存容量来动态调整发送⽅的窗⼝⼤⼩,避免⼀个快速的发送⽅淹没⼀个慢速的接收⽅
    拥塞控制:根据⽹络的承载容量来动态调整发送⽅的窗⼝⼤⼩,避免同⼀时刻发送⽅有太多的未被确认接收的
     算法:
    慢启动在刚刚连接网络的时候,最好先慢慢检测网络情况,再确定发送包的数量。这就是我们说的慢启动算法。
       发送方从1个包开始,收到ACK,下次就发送2个包,收到这两个包的ACK(请注意,这里有可能只有一个ACK),下次就发送4个包。

    “每收到一个ACK,拥塞窗口就增加一个报文段”。

    当然上图的情况太理想,实际的情况,坑cwnd为2的请求发出去两个报文包的时候,先返回了一个ACK,然后cwnd这个时候就为3,发送方就会继续发送请求包。。。

     拥塞避免算法 

    慢启动使得cwnd是呈指数增长。一定不可能是无限增长的,这里就有个阀值,超过这个阀值,就进入拥塞避免算法。

    先说拥塞避免算法,拥塞避免算法说的是拥塞窗口的增加不再是“每收到一个ACK,拥塞窗口就增加一个报文段”。 而是“每收到一个ACK,cwnd = cwnd + 1/cwnd”。

     

    快速回复算法

    快速恢复算法是为了不要有一个重传就那么大响应。能尽快恢复到网络流畅时候稳定的状态。

    其他

    DNS域名查询类型 :
    a) 递归查询 :每⼀个被请求的服务器如果没有记录, 就会向其它服务器查询, 并沿着
    查询路径返回
    b) 迭代查询 :本地服务器如果没有记录, 就向⾼级服务器查询, 被请求的服务器如果
    没有记录就返回⼀个可供查询的服务器地址

     

    FTP⽂件传输协议 :
    a) 主动模式 :client 向 server 命令通道 21 端⼝, server 向 client 数据通道 20 端⼝
    b) 被动模式 :client 向 server 命令通道 21 端⼝, client 向 server 数据通道> 1023

    电⼦邮件相关协议 :
    a) 消息交换的协议:
       i. 发送 email:简单邮件传输协议( SMTP)
       ii. 接收 email:
      1. 邮局协议第 3 版( POP3)
      2. Internet 消息访问协议( IMAP)
    b) 消息格式的协议:
       i. RFC 822:基本的 ASCII的⽂本邮件
       ii. 多⽤途 Internet 邮件扩展( MIME )

     

  • 相关阅读:
    指针,数组,字符串的区别(高质量程序设计指南C++/C语言第7章)
    bitset初始化问题
    书籍
    编译器的工作过程
    C++函数传递指向指针的指针的应用
    程序员面试金典--二叉树的下一个结点
    程序员面试金典--对称的二叉树
    程序员面试金典--按之字形顺序打印二叉树
    程序员面试金典--阶乘尾零
    程序员面试金典--矩阵元素查找
  • 原文地址:https://www.cnblogs.com/knightoffz/p/11957265.html
Copyright © 2011-2022 走看看