Linux高性能服务器编程——ch2笔记

2023-10-19 03:04

本文主要是介绍Linux高性能服务器编程——ch2笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第2章 IP 协议详解

2.1 IP服务的特点

无状态:IP通信双方不同步传输数据的状态信息。IP数据报相互独立,缺点是无法处理乱序和重复的IP数据报。上层协议如果是面向连接的协议(TCP),能够自己处理乱序和重复的报文段。IP数据报头部的标识字段是被用来处理IP分片和重组的,不是指接收顺序。优点是简单高效。UDP和HTTP也是无状态的。
无连接:IP通信双方都不长久地维持对方的任何信息。
不可靠:IP协议不能保证IP数据报准确地到达接收端。通知上层协议发送失败,但不重传,使用IP的上层协议需要自己实现数据确认、超时重传。

2.2 IPv4头部结构

image.png
同一个数据报的所有分片都具有相同的标识值。
实际偏移值:13位分片偏移*8,除最后一个分片外,每个分片数据部分长度必须是8的整数倍。
数据报转发过程中,每经过1个路由,TTL减1。

2.3 IP分片

IP数据报超过MTU时,将被分片传输。发生在发送端或中转路由器上,最终在目标机器上组装。
数据报标识、标志、片偏移。
image.png
以太网帧的MTU是1500字节。

2.4 IP路由

image.png
接收到IP数据报首先对IP头部进行CRC校验。
源站选路选项:松散源路由选择或严格源路由选择。
IP路由机制(给定目标IP地址,如何匹配路由表)按顺序:
1)完全匹配IP地址,就使用该路由项;
2)具有相同网路ID的网络IP地址(如网关地址),就使用该路由项;(网路ID:连续255部分,主机ID:连续0部分)
3)默认路由项,下一跳路由是网关。
静态路由更新方式:route命令。
动态路由更新方式:BGP协议、RIP协议、OSPF协议。

2.5 IP转发

主机和路由器都能进行IP转发。

2.6 重定向

ICMP 重定向报文也能用于更新路由表。
image.png

2.7 IPv6头部结构

解决v4地址不够用问题,并做了改进。
IPv6头部由40字节的固定头部和可变长的扩展头部组成。
零压缩法只能用一次。
IPv6协议并不是IPv4协议的简单扩展,而是完全独立的协议。用以太网帧封装IPv6数据报和IPv4数据报具有不同的类型值。第1章提到,IPv4数据报的以太网帧封装类型值是0x800, 而IPv6数据报的以太网帧封装类型值是 0x86dd。

这篇关于Linux高性能服务器编程——ch2笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/236871

相关文章

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文