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

2023-10-19 03:44

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

第1章 TCP/IP 协议族

1.1 TCP/IP 协议族体系结构以及主要协议

image.png
数据链路层
网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网、令牌环等)上的传输。
协议:ARP、RARP,实现IP地址和机器物理地址之间的转换。
网络层
数据包的选路和转发。WAN使用路由器(中间节点)连接分散的主机或LAN。
协议:IP,逐跳确定通信路径;ICMP,补充,检测网络连接,如ping。
传输层
为两台主机上的应用程序提供端到端的通信。image.png
数据链路层(驱动程序)封装了物理网络的电气细节;网络层封装了网络连接的细节;传输层则为应用程序封装了一条端到端的逻辑通信链路,它负责数据的收发、链路的超时重连等。
协议:TCP,为应用层提供可靠的(超时重传、数据确认)、面向连接(TCP连接,内核数据结构)的和基于流(没有边界、长度限制)的服务;UDP,为应用层提供不可靠、无连接(发送时指定IP地址等信息)和基于数据报(以指定长度为最小单位截断读出)的服务;SCTP,传输电话信号而设计。
应用层
处理应用程序的逻辑。
协议:telnet,远程登录协议,在本地完成远程任务;OSPF,动态路由更新协议,路由间通信;DNS,机器域名到IP地址的转换。

1.2 封装

封装实现上层协议使用下层协议提供的服务。
image.png
image.png
帧(以太网帧、令牌环帧)的最大传输单元(MTU)限制数据报分片传输。

1.3 分用

当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。依靠头部信息中的类型字段实现。
image.png

1.4 测试网络

image.png
LAN网络IP地址。

1.5 ARP协议工作原理

网络层地址(IP地址)至任意物理地址(MAC地址)的转换。
工作原理:主机向自己所在的网络广播一个ARP请求( 00:16:d3:5c:b9:e3 > ff:ff:ff:ff:ff:ff),该请求包含目标机器的网络地址。此网络上的其他机器都将收到这个请求,但只有被请求的目标机器会回应一个ARP应答( 08:00:27:53:10:67 > 00:16:d3:5c:b9:e3),其中包含自己的物理地址。
image.png
在构建ARP应答时填充目的端以太网地址,并将发送端和目的端交换,并修改操作字段。
arp [-a] [-d] [-s]命令:ARP维护一个高速缓存,保存经常访问的映射。
tcpdump命令:抓取机器之间交换的以太网帧。
image.png
ARP 请求和应答是从以太网驱动程序发出的。
路由器也将接收到以太网帧 1, 因为该帧是一个广播帧。

1.6 DNS工作原理

分布式域名服务系统,存放动态更新的机器名和IP地址的映射。
image.png
保存DNS服务器IP地址:/etc/resolv.conf
访问DNS服务器:host [-t]

1.7 socket 和 TCP/IP 协议族的关系

数据链路层、网络层、传输层协议是在内核中实现的,因此操作系统需要实现一组系统调用,使得应用程序能够访问这些协议提供的服务。实现这组系统调用的 API主要有两套:socket 和 XTI。
socket功能:一是将应用程序数据从用户缓冲区中复制到 TCP/UDP 内核发送缓冲区,或者是从内核 TCP/UDP 接收缓冲区中复制数据到用户缓冲区,以读取数据;二是应用程序可以通过它们来修改内核中各层协议的某些头部信息或其他数据结构,从而精细地控制底层通信的行为。比如可以通过 setsockopt 函数来设置 IP 数据报在网络上的存活时间。

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



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

相关文章

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

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 永久设置(重启仍生效