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. [Python自学] day-21 (2) (Cookie、FBV|CBV装饰器)

    一.什么是Cookie 1.什么是Cookie? Cookie是保存在客户端浏览器中的文件,其中记录了服务器让浏览器记录的一些键值对(类似字典). 当Cookie中存在数据时,浏览器在访问网站时会读取 ...

  2. bat文件设置环境变量脚本

    :: 获取管理员权限 @echo off % mshta vbscript:CreateObject()(window.close)&&exit cd /d "%~dp0&q ...

  3. 【Python之路】特别篇--抽屉新热榜

    登陆与注册 注册功能: 流程: 填写用户名,邮箱,获取邮箱验证码,填入密码 单击<下一步>按钮,完成注册! 1.获取邮箱验证码(具体步骤分析): 1.利用ajax 往后台传入邮箱, 2.后 ...

  4. 我爱网络流之最大流Dinic

    直接上大佬博客: Dinic算法详解及实现来自小菲进修中 Dinic算法(研究总结,网络流)来自SYCstudio 模板步骤: 第一步,先bfs把图划分成分成分层图网络 第二步,dfs多次找增广路 当 ...

  5. EM算法 小结

    猴子吃果冻 博客园 首页 新随笔 联系 管理 订阅 随笔- 35  文章- 0  评论- 3  4-EM算法原理及利用EM求解GMM参数过程   1.极大似然估计 原理:假设在一个罐子中放着许多白球和 ...

  6. MIME协议(一) -- RFC822邮件格式

    MIME协议(一) -- RFC822邮件格式 .   如同其他各种电子文档一样,电子邮件内容也必须遵循一定的格式要求,各种邮件处理程序才能从中分析和提取出发件人.收件人.主题和附件等信息.邮件内容的 ...

  7. 在linux写一个shell脚本用maven git自动更新代码并且打包部署

    服务器上必须安装了git maven jdk 并且配置好环境变量 实际服务器中可能运行着多个Java进程,所以重新部署的时候需要先停止原来的java进程,写一个按照名称杀死进程的脚本 kill.sh ...

  8. Java中boolean类型占用多少个字节?我说一个,面试官让我回家等通知

    摘自:https://www.cnblogs.com/qiaogeli/p/12004962.html 程序员乔戈里 腾讯面试官问我Java中boolean类型占用多少个字节?我说一个,面试官让我回家 ...

  9. 发布mybatis-generator-core 1.3.5的中文注释版

    源码剖析介绍:基于mybatis-generator-core 1.3.5项目的修订版以及源码剖析 目前,我把该项目,发布到了Maven中央仓库中,可直接使用: 使用方式 在项目.pom中,添加以下部 ...

  10. [Tex学习笔记]章节用罗马字母编号

    微信扫描如上二维码关注跟锦数学微信公众账号. 详情请见那里.