传输控制协议(TCP)

差错控制:TCP使用差错控制提供可靠性,包括检测受到损伤、丢失、失序的报文段

实现方法:1.16位检验和,2.确认机制:采用确认证实收到的报文段,3.重传(设置一个重传超时RTO计时器,计时器时间到,认为对应报文段丢失;收到3个重复的ACK立即重传丢失报文段,即快重传;对不消耗序号的报文段不重传)

特点:控制报文段不携带数据,但消耗一个序号;控制报文段也需要被确认;ACK报文段不消耗序号,也不需要确认

拥塞控制:网络中的负载大于容量就可能发生拥塞;通过窗口机制(流量控制)决定发送或接收端能够发送的最大数据量

拥塞窗口:发送端根据自己估计的网络拥塞程度而设置的窗口值(来自发送端的流量控制),接收端窗口:接收端根据目前的接受缓存大小所许诺的最新的窗口值(来自接收端的流量控制)

拥塞猜测:依靠重传发生猜测拥塞发生(慢开始、加速递减和拥塞避免算法)

  1. 发生超时
    1. 执行慢开始算法,拥塞窗口初始值为1,发送第一个报文段M0;发送端收到ACK1(确认M0,期望收到M1)后,将cwnd从1增加到2,于是发送端可以接着发送M1和M2两个报文段;接收端发回ACK2和ACK3,发送端每收到一个队新报文段的确认ACK,发送端的拥塞窗口加1,现在cwnd从2增到4,并发送M4~M8共4个报文段(即拥塞窗口cwnd随着传输次数按指数规律增长)
    2. 当拥塞窗口cwnd增长到慢开始门限值ssthresh(即当cwnd=16)时,改为执行拥塞避免算法,拥塞窗口按线性规律增长
    3. 利用TCP重传计时器设置拥塞窗口数值增长到24时,网络出现超时(表明网络拥塞了)
    4. 更新后的ssthresh变为12(即变为发送窗口值24的一半),拥塞窗口再重新设置为1,并执行慢开始算法
    5. 当cwnd=12时改为执行拥塞避免算法,拥塞窗口按线性规律增长,每经过一个往返时延就增加一个MMS的大小(?)
  2. 收到3个ACK:发生超时前cwnd的变化与发生超时时一样,发生超时后更新后的ssthresh变为12(即变为发送窗口值24的一半),拥塞窗口的值直接变为与ssthresh相同的值(发生超时与进入拥塞避免相连),之后一样执行拥塞避免算法,拥塞窗口按线性规律增长

传输层协议(UDP)-不可靠,面向无连接,高效

UDP用户数据报的首部格式

伪首部:计算检验和是,临时把伪首部和UDP用户数据报连接在一起,伪首部仅仅是为了计算检验和(12字节)

TCP与UDP的区别

  TCP UDP
是否面向连接 面向连接 无连接
是否提包可靠性 可靠传输 不提供可靠性
是否流量控制 流量控制 不提供流量控制
传输速度 慢 快
协议开销 大(20字节) 小(8字节)

网络层协议(IP)

首部长度字段:占4位,以4字节(32bit)为单位(不以字节为单位)

总长度字段:占16位,单位为字节;首部长度(即4*HLEN)+数据长度;总长度必需不超过最大传送单元MTU;IP分组的最大长度是65535

标识字段:源站每发送一个分组,标识位加1;(源IP地址,标识)→全网唯一分组标识--标识同一数据报的各个分片

标志字段:占3位,最低位为MF(More Fragment),用一比特位来表示“更多的片”,MF=0最后一个分片,MF=1不是最后一个分片;中间一位是DF(Don't Fragment)只有等于0时才允许分片

  D M

片偏移字段:8字节为偏移单位--分片的顺序

生存时间(TTL):源和目的之间的路由器个数(跳数);最大值为255(20+21+……28);路由器转发时TTL减1,为0时丢弃该分组

首部检验和:若接收端利用发送端的检验和计算出的结果为0则保留,否则丢弃该数据报

分片计算片偏移字段的值为每个分片的第一个数据/8,普通包头部长度为20字节(MTU-20)

若某分片丢失,则丢弃所有分片,重传整个数据报

2019-03-11 星期一

通行导论-IP数据网络基础(2)的更多相关文章

  1. 通信导论-IP数据网络基础(4)

    IP地址的编址方法--IP地址+掩码地址=网络地址 分类的IP地址 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,标志主机或路由器所连接到的网络,另一个字段则是主机号 ho ...

  2. 通信导论-IP数据网络基础(1)

    TCP/IP封装过程: 端口号:服务器一般都是通过知名端口号(1~1023)来识别应用程序,(TCP)21.23.25,(UDP)53.69.161 TCP报文格式: 字节号:TCP把连接中发送的所有 ...

  3. 通信导论-IP数据网络基础(3)

    ICMP(IP辅助协议)--网际控制报文协议 ICMP报文种类:ICMP差错报文(终点不可达.时间超过等5种)和ICMP询问报文(回送请求和回答请求.时间戳请求和回答报文2种) ICMP是一种集差错报 ...

  4. 图解TCP/IP笔记-网络基础知识

    1.计算机网络发展的7个阶段1)批处理服务器一次只能处理一批程序指令2)分时服务器可以分时为多台客户端服务3)计算机之间通信计算机之间由通信线路连接,互相通信4)计算机网络的产生通过分组交换技术,在不 ...

  5. TCP/IP通信网络基础

    TCP/IP是互联网相关的各类协议族的总称. TCP/IP的分层管理 分层的优点:如果只有一个协议在互联网上统筹,某个地方修改就要把所有的部分整体换掉,采用分层则只需要改变相应的层.把各个接口部分规划 ...

  6. TCP/IP协议栈---网络基础篇(3)

    TCP/IP协议栈 在网络中实际使用的是TCP/IP,OSI是参考模型. TCP/IP协议栈 – 是由一组不同功能的协议组合在一起构成的协议栈 – 利用一组协议完成OSI所实现的功能 应用层协议 传输 ...

  7. 网络基础知识-TCP/IP协议各层详解

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  8. 【Windows socket+IP+UDP+TCP】网络基础

    Windows Socket+网络      Winsock是 Windows下套接字标准.          Winsock 编程分为UDP[Windows socket + UDP],TCP[Wi ...

  9. 【Linux网络基础】网络拓扑、OSI层次模型、TCP/IP协议簇

    一.前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工作来说这些并不是重点,因此,我不可能从最基础的网络知识开始讲起.本节内容更多是从一个梳理和 ...

随机推荐

  1. JAVA 中BIO,NIO,AIO的理解 (转)

    转自: http://qindongliang.iteye.com/blog/2018539 另外类似可参考资料 :http://www.360doc.com/content/13/1029/20/9 ...

  2. eclipse连接mysql数据库

    我这里在eclipse新建一个maven 项目做测试 首先我们要在本地电脑安装了mysql数据库和mysql驱动包 我的mysql数据库是通过phpstudy自带的 这个是驱动包 window–> ...

  3. 整理Xen理论知识

    XEN 简介 XEN 是一个基于X86架构.发展最快.性能最稳定.占用资源最少的开源虚拟化技术.Xen可以在一套物理硬件上安全的执行多个虚拟机,与 Linux 是一个完美的开源组合,Novell SU ...

  4. 【转载】Google 程序员消灭 Bug 的 5 大法宝!

    遇到问题怎么办?还能怎么办,解决呗.那到底怎么解决呢?你是有什么惯用的逻辑模式.解决策略,还是全靠直觉手感? 本文中,一位 Google 程序员将“现场”演示其解决编程问题的始末,看看有套路的问题解决 ...

  5. Linux安装rar

    1.下载RAR 官网下载地址:https://www.rarlab.com/download.htm wget下载:wget http://www.rarsoft.com/rar/rarlinux-x ...

  6. Flutter环境搭建

    本文介绍mac上搭建Flutter环境 1.Flutter官方提供中国地区镜像地址:https://github.com/flutter/flutter/wiki/Using-Flutter-in-C ...

  7. linux下使用nmon工具对服务器性能进行检测

    1.nmon工具介绍: nmon工具是linux系统下可以对服务器及系统性能进行监测,CPU信息.CPU占用.内存使用.网卡使用等.最大的好处是此工具会将结果以列表的形式或者是模拟图形化的方式展示,不 ...

  8. Python中的split()函数的用法

    函数:split() Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(lis ...

  9. java中获取远程ip的一个坑

    发现在高请求量的时候获取hostName慢,后发现getHostName方法慢导致的:需要获取hostName为获取ip的方式了:java 中 InetSocketAddress // remoteA ...

  10. xcode9.4 报错 error:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

    原因 http | https 协议  不能正常使用 找到的解决方案 但是在字段名上有了变化,不过复制进去 还是会自动选择对应的 解决办法 1. 在Info.plist中添加 App Transpor ...