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. js替换文本内容。实例

    <script language="javascript"> var r= "1\n2\n3\n"; //将字母\n替换成分号 alert(r.re ...

  2. 题解 [CF803C] Maximal GCD

    题面 解析 一开始以为这题很难的... 其实只要设\(d\)为\(a\)的最大公因数, 即\(a[i]=s[i]*d\), 因为\(n=\sum_{i=1}^{n}a[i]=\sum_{i=1}^ns ...

  3. Elasticsearch7.1中文文档-第一章-入门

    安装openjdk wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-secur ...

  4. 百度ueditor实现word图片自动转存

    官网地址http://ueditor.baidu.com Git 地址 https://github.com/fex-team/ueditor 参考博客地址 http://blog.ncmem.com ...

  5. 【Android】查看内存

      [文章来源]http://blog.csdn.net/hudashi/article/details/7050897 查看内存使用的方式有很多种,但是各个方式查看到的结果可能会有微略不同. 方式一 ...

  6. Casual Literary Notes

    写在前面的话: 人生中总会有一些惊喜,它会给予坚守的人们以奖励,提醒着人们,生命中不光是辛劳和付出. 很多收获,最后看来,往往都是因为当初的那一点坚持. -- 雷宇<现场> 1.18 上午 ...

  7. kong-dashbord本地安装gulp打包报错的解决办法

    本地安装kong-dashbord执行npm run build 报如下错误 gulp[]: ../src/node_contextify.cc::]->IsString()' failed. ...

  8. Django-自定义web框架

    自定义web框架 1.准备登录的html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  9. Codeforces 1246D/1225F Tree Factory (构造)

    题目链接 https://codeforces.com/contest/1246/problem/D 题解 首先考虑答案的下界是\(n-1-dep\) (\(dep\)为树的深度,即任何点到根的最大边 ...

  10. 解决phpStorm使用vue提示"Attribute v-xxx is not allowed here"的问题

    jetbrains家族的新版webStorm.phpStorm等工具都已支持vue,不需要自己再安装Vue.js插件,对vue单文件组件支持挺好.但是在html文件中直接<script>引 ...