一、UDP协议

1、概述

UDP提供不可靠的服务,无连接(不存在建立连接的时延),首部开销相对TCP小,没有拥塞控制,提供最大努力交付,面向报文(无论多长的报文UDP也只加一个头部就往下发;TCP面向字节流)。通常用于允许一些数据丢失,但不允许交较大时延、传输少量数据(DNS)。

2、UDP首部格式(8字节)

  • 源端口号:16位。
  • 目标端口号:16位。
  • UDP长度:16位。包括UDP首部和数据的总长度。最少为8。
  • 校验和: 16位。

    1、临时添加12字节UDP伪首部,设置校验和为0。

    2、按16位(不足末尾补0)为单位数字将UDP伪首部、UDP首部、UDP数据以2进制反码相加求和。

    3、将16位的和放入校验和。

    4、校验:加UDP伪首部,按16位为单位计算2进制反码的和,结果为0则正确。

二、IP协议、

references:

OSI参考模型——网络层:IPv4协议和IPv6协议详解


IP协议

1、特点

  • 无连接的、不可靠的分组传送协议;
  • 尽最大努力交付;
  • 是点对点的网络层通信协议;

2、IP首部格式(20~60字节)

  1. 版本:4位,4是IPv4,6是IPv6;
  2. 首部长度:8位。
  3. 总长度:16位。总长度=首部长度+数据长度,最大\(2^{16}-1=65535\)字节。
  4. 标识(Identification):16位,用于分片重组。属于同一个分片的ID相同。
  5. 标志(Flags):3位,用于分片重组。第一位未使用,必须为0;第二位DF不分片标志,表示能否分片,1不能分片,0能分片。若DF为1且IP分片的长度大于MTU,则放弃该分片并发送ICMP差错报文向源主机报告;第三位MF更多分片标志,表示该分片是不是最后一个分片(后面还有没有分片),1表示不是,0表示是最后一个分片。
  6. 片偏移:13位,表示分片在原始数据中的位置。单位为8字节,如片偏移10,则偏移量为80字节。最多表示偏移\(2^{13}*8=65536\)字节。
  7. 生存时间(TLL):8位,表示包可以经过多少个路由器的中转,每经过一个路由器,TLL减1。当TTL为0时,丢弃IP数据包并发送ICMP报文通知源主机。TLL可以防止数据包环路。
  8. 协议:8位,表示使用IP的高层协议类型(IP首部的下一个首部),1是ICMP,2是IGMP,6是TCP,17是UDP。
  9. 首部校验和:16位,校验IP的首部。
  10. 地址:32位。
  11. 目标地址:32位。

3、分片和重组

相关字段:标识、标志、片偏移。

1、最大传输单元(MTU)指定了网络中可传输数据包的最大尺寸,当分组的长度超过MTU,并且DF为0就要分片(DF为1且IP分片的长度大于MTU,则放弃该分片并发送ICMP差错报文向源主机报告)。每个片段的最大尺寸是MTU-IP头部长度,然后进行以下改动:总长度为当前片段大小;MF除了最后一个其他都为1;片偏移在原来片偏移基础上;首部校验和重新计算。

2、通过片偏移找到重组的顺序,MF为0表示所有分片已到达。

4、路径MTU发现

主机先发送整个数据包,并且将DF设为1。这样遇到长度大于传输单元时就会丢弃并返回ICMP报文。然后将ICMP通知中的MTU设为当前的MTU,然后根据这个MTU进行分片。然后再传输。如此往复,直到没有ICMP报文返回,则说明现在的MTU已经是真的MTU了。

三、ICMP

1、概述

ICMP协议是网络层协议。因为IP协议提供的是不可靠的服务,所以丢包后不能回复是否丢包和丢包的原因,所以通过ICMP完成。分为查询报文和差错报文。

IP数据报协议字段为1就说明协议是ICMP。

2、报文格式

  1. 类型:8位。表示报文类型。1~127是差错报文,128以上是查询报文。
  2. 代码:8位。标识对应的代码,和类型字段一起标识ICMP报文的详细类型。
  3. 校验和:16位。

3、常见报文

  1. 回显请求(类型8)、回显应答(类型0):一台主机向另一个主机发送ICMP回显请求报文,如果途中没有异常(丢失,传输失败)就返回ICMP回显应答报文,说明这台主机存在。Ping命令使用的就是ICMP回显请求和应答报文。
  2. 目标不可达(类型3):网络不可达(代码0),主机不可达(代码1),协议不可达(代码2)。
  3. 超时报文(类型11):传输超时(代码0),分段重组超时(代码1)。

计算机网络 part2的更多相关文章

  1. 计算机网络part2——物理层

    物理层概述 1.物理层基本概念 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体. 主要任务:确定与传输媒体接口有关的一些特性 特性: 机械特性 电气特性 功能特性 规 ...

  2. 秋招C++面试相关总结索引

    C++相关 C++ part1 C++ part2 C++ part3 C++ part4 C++ part5 C++ part6 C++ part6.5 C++ part7 C++ part8 C+ ...

  3. 《计算机网络 自顶向下方法》 第8章 计算机网络中的安全 Part2

    SSL(使 TCP 连接安全) SSL(Secure Socket Layer),即安全套接字层,是对 TCP 的强化 HTTPS 使用 SSL,而 HTTP 不使用 SSL 通过采用机密性.数据完整 ...

  4. 《计算机网络 自顶向下方法》 第6章 链路层和局域网 Part2

    待补充完善 Web 页面的请求历程 应用层     报文.主机 运输层     报文段. 网络层     数据报.路由器.IP 地址 链路层     以太网帧.交换机.MAC 地址 步骤 1)到 4) ...

  5. 《计算机网络 自顶向下方法》 第3章 运输层 Part2

    待补充完善 TCP 相关基本点 1.面向连接 两个不同主机上的进程在通过 TCP 进行通信之前,必须先通过三次握手来建立 TCP 连接 2.全双工服务 即,如果一台主机上的进程 A 与另一台主机上的进 ...

  6. 《计算机网络 自顶向下方法》 第2章 应用层 Part2

    域名.主机名?   从范围上看: 域名的范围比主机名大 一个域名下通常有多个主机名 从组成上看: 主机名 = 服务器名(或计算机名) + 域名 举例说明: baidu.com 是百度的域名 www.b ...

  7. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 3.安装Clus ...

  8. [计算机网络]简易http server程序

    好久没输出了,知识还是要写下总结才能让思路更加清晰.最近在学习计算机网络相关的知识,来聊聊如何编写一个建议的HTTP服务器. 这个http server的实现源代码我放在了我的github上,有兴趣的 ...

  9. Linux平台 Oracle 11gR2 RAC安装Part2:GI安装

    三.GI(Grid Infrastructure)安装 3.1 解压GI的安装包 3.2 安装配置Xmanager软件 3.3 共享存储LUN的赋权 3.4 使用Xmanager图形化界面安装GI 3 ...

随机推荐

  1. MySQL全面瓦解20:可编程性之流程控制语句

    背景 说到流程控制语句,我们在程序语法中用的比较多,比如C#的if..else...,while...,?: 等.同样的,在MySQL中,也有一些流程控制的语法,方便我们在写函数.存储过程的时候对逻辑 ...

  2. USB充电限流IC,可调到4.8A,输入 6V关闭

    随着手机充电电流的提升,和设备的多样化,USB限流芯片就随着需求的增加而越来越多,同时为了更好的保护电子设备,需要进行一路或者多路的负载进行限流. 一般说明 PW1503,PW1502是超低RDS(O ...

  3. uni-app 微信小程序 picker 三级联动

    之前做过一个picker的三级联动功能,这里分享代码给大家 具体代码: // An highlighted block <template> <view> <picker ...

  4. HTML部分

    1.说一下<label>标签的用法 label标签主要是方便鼠标点击使用,扩大可点击的范围,增强用户操作体验 2.说一下事件代理? 事件委托是指将事件绑定到目标元素的父元素上,利用冒泡机制 ...

  5. c++hook内联汇编模板

    1 #include "Windows.h" 2 #include "tlhelp32.h" 3 #include "String.h" 4 ...

  6. https://github.com/golang/crypto/blob/master/bcrypt/bcrypt.go

    https://github.com/golang/crypto/blob/master/bcrypt/bcrypt.go

  7. 避免重复提交?分布式服务的幂等性设计! 架构文摘 今天 点击蓝色“架构文摘”关注我哟 加个“星标”,每天上午 09:25,干货推送! 来源:https://www.cnblogs.com/QG-whz/p/10372458.html 作者:melonstreet

    避免重复提交?分布式服务的幂等性设计! 架构文摘  今天 点击蓝色"架构文摘"关注我哟    加个"星标",每天上午 09:25,干货推送!      来源:h ...

  8. 微服务中台落地 中台误区 当中台遇上DDD,我们该如何设计微服务

    小结: 1. 微服务中台不是 /1堆砌技术组件就是中台 /2拥有服务治理就是中台 /3增加部分业务功能就是中台 /4Cloud Native 就是中台 https://mp.weixin.qq.com ...

  9. Django (auth模块、User对象、用户认证、线上-用户认证)

    一.auth模块 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate()    提供了用户认证,即验证用户名以及密码是否正确,一般需要usern ...

  10. ElasticSearch 入门简介

    公号:码农充电站pro 主页:https://codeshellme.github.io ElasticSearch 是一款强大的.开源的.分布式的搜索与分析引擎,简称 ES,它提供了实时搜索与聚合分 ...