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服务器的更多相关文章

  1. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  2. 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化

    高性能Linux服务器 第10章    基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...

  3. 高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep extundelete工具恢复rm -rf 误删除的文件

    高性能Linux服务器 第6章  ext3文件系统反删除利器ext3grep  extundelete工具恢复rm -rf 误删除的文件 只能用于ext3文件系统!!!!!!!高俊峰(高性能Linux ...

  4. 优化系统资源ulimit《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》

    优化系统资源ulimit<高性能Linux服务器构建实战:运维监控.性能调优与集群应用> 假设有这样一种情况,一台Linux 主机上同时登录了10个用户,在没有限制系统资源的情况下,这10 ...

  5. 优化Linux内核参数/etc/sysctl.conf sysctl 《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》

    优化Linux内核参数/etc/sysctl.conf  sysctl  <高性能Linux服务器构建实战:运维监控.性能调优与集群应用> http://book.51cto.com/ar ...

  6. 高性能linux服务器内核调优

    高性能linux服务器内核调优 首先,介绍一下两个命令1.dmesg 打印系统信息.有很多同学们服务器出现问题,看了程序日志,发现没啥有用信息,还是毫无解决头绪,这时候,你就需要查看系统内核抛出的异常 ...

  7. 利用Azure高级存储搭建高性能Linux服务器(1)

    目前Azure针对虚拟机提供两种类型的存储,一种是标准存储,基于HDD的,一种是高性能存储Premium Storage(在下文中简称PS),基于SSD的.针对用户高性能,低延迟,I/O密集型的应用, ...

  8. 简述 高性能Linux服务器 模型架构 设计

    主要从三个方面进行分析: 1.事件处理模式 2.并发模式 一.事件处理模式 1.Reactoor模式 定义: 主线程只负责监听文件描述符上是否有事件发生,有的话立即将该事件通知工作线程,除此之外,主线 ...

  9. 高性能Linux服务器构建实战笔记

    一.            web应用篇 1           HTTP服务器Nginx 1.1          性能上.功能上.安装上与Apache对比 l  性能上占用系统资源少,支持并发高 ...

随机推荐

  1. Codeforces Round #590 (Div. 3) C. Pipes

    链接: https://codeforces.com/contest/1234/problem/C 题意: You are given a system of pipes. It consists o ...

  2. mySql数据重复数据去重

    1.问题来源:数据中由于并发问题,数据存在多次调用接口,插入了重复数据,需要根据多条件删除重复数据: 2.参考博客文章地址:https://www.cnblogs.com/jiangxiaobo/p/ ...

  3. docker管理

    查看容器名 [root@docker ~]# docker inspect -f "{{.Name}}" a2f /u1 停止/启动终止状态的容器 [root@docker ~]# ...

  4. Mac OS 系统开发环境的一些坑

    最近换 Mac OS 系统开发,运行项目时遇到各种报错,记录下: 1.拉取项目后,需要安装依赖 npm install ,提示需要安装 xcode,报错如下. 从官网下载 xcode 时提示要更新最新 ...

  5. java读取 xml文件

    java读取xml文件的四种方法  转自https://www.cnblogs.com/lingyao/p/5708929.html Xml代码 1 <?xml version="1. ...

  6. Cogs 604.方程(排列组合+高精度)

    方程 ★☆ 输入文件:equationz.in 输出文件:equationz.out 简单对比 时间限制:1 s 内存限制:128 MB [题目描述] hyc 碰到了一个难题,请你来帮忙解决. 对于不 ...

  7. 新西达电调初始化代码,使用nodejs ffi技术调用wiringpi,代码使用typescript编写

    这是我设计的F450四轴飞行器飞控代码的一部分 运行在orangepi-zero上,操作系统是armbian,思路是使用node-ffi调用wiringpi的so库与GPIO通信,然后控制端逻辑代码使 ...

  8. dup2函数

    将当前系统中的进程信息打印到文件中 命令行:ps aux > out 将ps得到的信息重定向到out文件中 使用dup2文件在程序中完成. int dup2(int oldfd,int newf ...

  9. import torch错误解决

    import torch出现 ”from torch._C import * ImportError: DLL load failed: 找不到指定的模块“错误这里torch=1.0.1,torchv ...

  10. nohup 的含义

    )./a.sh &,&对SIGINT 信号免疫程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程.Ctrl + C,a ...