高性能Linux服务器
TCP/IP协议族——高性能Linux服务器编程
现在 Internet 使用的主流协议族是 TCP/IP 协议族,它是一个分层、多协议的通信体系。
TCP/IP 协议族体系结构以及主要协议
TCP/IP 协议族是一个四层协议系统,自底面上分别是数据链路层、网络层、传输层和应用层。每一层完成不同的功能,且通过若干协议来实现,上层协议使用下层协议提供的服务。
数据链路层
数据链路层实现了网卡接口的网络驱动程序,处理数据在物理媒介上的传输。常用的两个协议是 ARP (Address Resoleve Protocol 地址解析协议) 和 RARP (Reverse Address Resoleve Protocol 逆地址解析协议),它们实现了 IP 地址和机器物理地址之间的相互转换。
网络层
网络层实现数据包的选路和转发。由于通信的主机一般不是直接相连的,而是通过多个中间节点(路由器)连接的,网络层的任务就是选择这些节点,以确定通信路径。网络层的核心协议是 IP (Internet Protocol 因特网协议)。另一个重要的协议是 ICMP (Internet Control Message Protocol 因特网控制报文协议),是 IP 协议的重要补充,主要用于检测网络连接,ping 程序就是使用的 ICMP 协议。
传输层
传输层为两台主机上的应用程序提供端对端的通信,主要有三个协议:TCP、UDP、SCTP。
TCP (Transmission Control Protocol 传输控制协议) 为应用层提供可靠的、面向连接的和基于流的服务。使用超时重传、数据确认等方式来确保数据包被正确地发送到目的端,使用前必须先建立连接,内核维持一些连接信息,发送端逐个字节地向数据流(没有边界即长度限制)中写入,接收端逐个字节接收,通信结束时双方必须关闭连接以释放这些内核数据。
三次握手建立连接与四次挥手断开连接

UDP (User Datagram Protocol 用户数据报协议),与 TCP 相反,提供不可靠、无连接和基于数据报的服务,每个数据报都有一个长度。
SCTP (Stream Control Transmission Protocol 流控制传输协议) 是为传输电话号码而设计的,
应用层
应用层负责处理应用程序的逻辑,在用户空间来实现。数据链路层、网络层、传输层负责处理网络通信,这部分在内核空间中实现,必须稳定又高效。
封装
应用程序数据在发送到物理网络上之前,沿着协议栈从上往下依次传递,每层协议都将在上层数据的基础之上加上自己的头部信息,有时包括尾部数据,以实现该层的功能,这个过程就叫做封装。

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

arp 协议工作原理
ARP 协议能实现任意网络层地址到任意物理地址的转换,主机向自己所在的网络广播一个 ARP 请求包含目标机器的网络地址,此网络上的其他机器都将收到这个请求,但只有被请求的目标机器会回应一个 ARP 应答,其中包含自己的物理地址。
dns 工作原理
DNS 是一套分布式的域名服务系统,每个 DNS 服务器上存放着大量的机器名和 IP 地址的映射,并且是动态更新的,众多网络客户端程序都是用 DNS 协议来向 DNS 服务器查询目标主机的 IP 地址。
Socket 和 TCP/IP 协议族的关系
Socket 是一套通用网络编程接口,不但可以访问内核中 TCP/IP 协议栈,而且可以访问其他网络协议栈。
高性能Linux服务器的更多相关文章
- 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...
- 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化
高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...
- 高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep extundelete工具恢复rm -rf 误删除的文件
高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep extundelete工具恢复rm -rf 误删除的文件 只能用于ext3文件系统!!!!!!!高俊峰(高性能Linux ...
- 优化系统资源ulimit《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》
优化系统资源ulimit<高性能Linux服务器构建实战:运维监控.性能调优与集群应用> 假设有这样一种情况,一台Linux 主机上同时登录了10个用户,在没有限制系统资源的情况下,这10 ...
- 优化Linux内核参数/etc/sysctl.conf sysctl 《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》
优化Linux内核参数/etc/sysctl.conf sysctl <高性能Linux服务器构建实战:运维监控.性能调优与集群应用> http://book.51cto.com/ar ...
- 高性能linux服务器内核调优
高性能linux服务器内核调优 首先,介绍一下两个命令1.dmesg 打印系统信息.有很多同学们服务器出现问题,看了程序日志,发现没啥有用信息,还是毫无解决头绪,这时候,你就需要查看系统内核抛出的异常 ...
- 利用Azure高级存储搭建高性能Linux服务器(1)
目前Azure针对虚拟机提供两种类型的存储,一种是标准存储,基于HDD的,一种是高性能存储Premium Storage(在下文中简称PS),基于SSD的.针对用户高性能,低延迟,I/O密集型的应用, ...
- 简述 高性能Linux服务器 模型架构 设计
主要从三个方面进行分析: 1.事件处理模式 2.并发模式 一.事件处理模式 1.Reactoor模式 定义: 主线程只负责监听文件描述符上是否有事件发生,有的话立即将该事件通知工作线程,除此之外,主线 ...
- 高性能Linux服务器构建实战笔记
一. web应用篇 1 HTTP服务器Nginx 1.1 性能上.功能上.安装上与Apache对比 l 性能上占用系统资源少,支持并发高 ...
随机推荐
- 2、django后端:课程表、课程详细表
1.课程表录入数据 有些人卖接口,接口就是 数据 1.课程表 2张表+3张表 分布式数据库分表 数据库优化 垂直分表 1000w条数据,999w条数据不常看,经常查的1w条数据放在另一个表 水平分表 ...
- 洛谷 U5122 T2-power of 2(费马小定理)
U5122 T2-power of 2 题目提供者胡昊 题目描述 是一个十分特殊的式子. 例如: n=0时 =2 然而,太大了 所以,我们让对10007 取模 输入输出格式 输入格式: n 输出格式: ...
- 在Postman脚本中发送请求(pm.sendRequest)
Postman的Collection(集合)/Folder(集合的子文件夹)/Request(请求)都有Pre-request script和Tests两个脚本区域, 分别可以在发送请求前和请求后使用 ...
- Python回归分析五部曲(三)—一元非线性回归
(一)基础铺垫 一元非线性回归分析(Univariate Nonlinear Regression) 在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条曲线近似表示,则称为一元非线性回归 ...
- python控制窗口移动(轨迹为圆)
需先打开一个无标题记事本, import win32con import win32gui import time import math notepad = win32gui.FindWindow( ...
- IDEA项目结构只剩下了pom,而代码都找不到了
大体效果就是下面这个样子的, 只剩下一个pom文件了. 解决方式: 本来想彻底排查下的,但是最后发现 直接删除.idea文件, 重新引入项目,就可以解决,可能就是编译器发神经吧 下面是排查的过程,不过 ...
- 转载:在Excel中将数据库字段转换成驼峰式
转载地址 在Excel中将数据库字段转换成驼峰式 1.将数据库字段复制到Excel表格第一列: 2.在第二列顶部输入=PROPER(A1)命令: 3.在第三列顶部输入=SUBSTITUTE(B1,&q ...
- Leetcode题目206.反转链表(简单)
题目描述: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: ...
- 2018-2019-2 20175215 实验四《Android程序设计》实验报告
一.实验内容与步骤 1.任务一:Android Studio的安装测试. 任务要求:参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd) ...
- ci 框架中defined('BASEPATH') OR exit('No direct script access allowed');
作用: OR 就是前面的是true时,就不走后面了. 加这个是为了防止不是从index.php访问到的控制器