问题聚焦:     本节从如下四个方面讨论TCP协议:     TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流     TCP状态转移过程:TCP连接的任意一端都是一个状态机     TCP数据流:两种主要类型:交互数据流,成块数据流     TCP数据流的控制:保证可靠传输和提高网络通信质量,两个方面:超时重传,拥塞控制 1 TCP服务的特点 传输层协议:TCP协议.UDP协议 TCP协议相对于UDP协议的特点:面向连接.字节流和可靠传输.      …
1 IP服务特点 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的服务. 无状态:IP通信双方不同步传输数据的状态信息,因此IP数据包的发送.传输和接收都是无序的.     缺点:无序,不可靠         优点:简单.高效 不可靠:不能保证IP数据报准确地到达接收端,它只是承诺尽最大努力.发送端(转发端)一旦检测到IP数据包发送失败(如存活时间过长,数据报不正确),就通知上层协议发送失败,而不会试图重传.               因此使用IP服务的上层协议(如…
1 TCP/IP协议族体系结构 数据链路层:     职责:实现网卡接口的网络驱动程序,一处理数据在物理媒介(如以太网.令牌环等)上的传输.     常用协议:ARP协议(地址解析协议),RARP协议(逆地址解析协议)--实现了IP地址和机器物理地址之间的相互转换.     寻址:使用物理地址(MAC地址)寻址一台机器.因此网络层必须先将目标机器的IP地址转化成其物理地址,才能使用数据链路层提供的服务. 网络层:     职责:数据包的选路和转发.选路:确定两台主机之间的通信路径,对上层协议隐藏…
问题聚焦:     本节从如下四个方面讨论TCP协议:     TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流     TCP状态转移过程:TCP连接的任意一端都是一个状态机     TCP数据流:两种主要类型:交互数据流,成块数据流     TCP数据流的控制:保证可靠传输和提高网络通信质量,两个方面:超时重传,拥塞控制 1 TCP服务的特点 传输层协议:TCP协议,UDP协议 TCP协议特点:面向连接,字节流和可靠传输     先建立连接,才能开始读…
前言: 在学习swoole入门基础的过程中,遇到了很多知识瓶颈,比方说多进程.多线程.以及进程池和线程池等都有诸多的疑惑.之前也有学习相关知识,但只是单纯的知识面了解.而没有真正的学习他们的来龙去脉.所以为了swoole打下坚实的基础,打算从<linux高性能服务器编程>一书中找到启蒙.在此作为学习总结. 书本架构: 书中 1-4 章节,主要介绍TCP/IP协议族网络知识.以及TCP/IP通信的过程. 书中 5-15章节,主要解析服务器编程的主要方面(概念.模型.函数.实践) 第一章 1.1…
<Linux高性能服务器编程>:当当网.亚马逊 目录: 第一章:tcp/ip协议族 第二章:ip协议族 第三章:tcp协议详解 第四章:tcp/ip通信案例:访问Internet 第五章:linux网络编程基础API 第六章:高级IO函数 第七章:linux服务器程序规范 第八章:高性能服务器框架 第九章:IO复用 第十章:信号 第十一章:定时器 第十二章:高性能IO框架库libevent 第十三章:多进程编程 第十四章:多线程编程 第十五章:进程池和线程池 第十六章:服务器调制.调试和测试…
第3章 TCP协议详解 3.1 TCP服务的特点 传输协议主要有两个:TCP协议和UDP协议,TCP协议相对于UDP协议的特点是 面向连接使用TCP协议通信的双方必须先建立连接,完成数据交换后,通信双方都必须断开连接以释放系统资源. 字节流 发送端执行的写操作次数和接收端执行的读操作次数之间没有任何数量关系. 相比UDP则是发送端每执行一次写操作,UDP模块就将其封装成一个UDP数据报并发送之.为避免丢包,接收端必须及时针对每一个UDP数据报执行读操作. 可靠传输 1) TCP协议采用发送应答机…
网络编程TCP/IP详解 1. 网络通信 中继器:信号放大器 集线器(hub):是中继器的一种形式,区别在于集线器能够提供多端口服务,多口中继器,每个数据包的发送都是以广播的形式进行的,容易阻塞网络. 网桥:局域网之间建立连接的桥梁,网桥是一种对帧进行转发的技术,根据MAC分区块,可隔离碰撞.网桥将网络的多个网段在数据链路层连接起来. 交换机(switch):工作在数据链路层,交换机与网桥的细微差别在于交换机常常用来连接独立的计算机,而网桥连接的目标是LAN,所以交换机的端口较网桥多.而且集线器…
问题聚焦:     这节介绍的不仅是网络编程的几个API     更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系.     这节主要介绍三个方面的内容:套接字(socket地址)API,socket基础API,和网络信息API. 套接字API 套接字socket:(ip, port),即IP地址和端口对,唯一地表示了使用该TCP通信的一端. 需要了解:主机字节序和网络字节序. 原因:考虑32位的机器,CPU的累加器一次装载4字节的内容.那么这4字节在内存中的顺…
如果想了解HTTP的协议结构,原理,post,get的区别(阿里面试题目),请参考:HTTP协议 结构,get post 区别(阿里面试) 这里有个大白话的解说,可以参考:TCP/IP协议三次握手和四次挥手大白话解说 但是如果想进入阿里的话,还是看本文理解TCP的三次握手和四次挥手,发送的报文和状态都要掌握,阿里问了好几次了. 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各…
记录<Linux高性能服务器编程>书里面讲解到的若干 shell 命令 arp 命令查看ARP高速缓存: [root@VM_0_10_centos heliang]# arp -a ? ( [ether] on eth0 ? ( [ether] on eth0 ? ( [ether] on eth0 所有知名应用层协议使用的端口号可以在  /etc/services  文件中找到 cat /etc/servies tcpdump抓包 tcpdump -i eth0 -ent DNS服务器IP地…
TCP协议详解 一.TCP协议 1.TCP 通过以下方式提供可靠性: ·  ◆ 应用程序分割为TCP认为最合适发送的数据块.由TCP传递给IP的信息单位叫做报文段. ·  ◆ 当TCP发出一个报文段后,它启动一个定时器,等待目的端确认收到这个报文段.如果不能记时收到一个确认,它 就重发这个报文段. ·  ◆ 当TCP收到发自TCP连接另一端的数据,它将发送一个确认.这个确认不是立即发送,通常延迟几分之一秒. ·  ◆ TCP将保持它首部和数据的检验和.这是一个端到端的检验和,目的是检测数据在传输…
问题聚焦:     前篇提到了I/O处理单元的四种I/O模型.     本篇详细介绍实现这些I/O模型所用到的相关技术.     核心思想:I/O复用 使用情景: 客户端程序要同时处理多个socket. 客户端程序要同时处理用户输入和网络连接. TCP服务器要同时处理监听socket和连接socket,这是使用最多的场合. 服务器要同时处理TCP请求和UDP请求. 服务器要同时监听多个端口或者处理多种服务. 主要技术: select poll epoll select系统调用 作用:     在…
问题聚焦:     核心章节.     服务器一般分为如下三个主要模块:I/O处理单元(四种I/O模型,两种高效事件处理模块),逻辑单元(两种高效并发模式,有效状态机)和存储单元(不讨论). 服务器模型 C/S模型 结构: 特点: 逻辑简单. 工作流程: I/O复用技术:select,同时监听多个客户请求. 优点:适合资源相对集中的场合. 缺点:当访问量过大,可能所有客户都将得到很慢的相应. P2P模型 结构:两种结构 结构b比结构a增加了发现服务器,用于主机之间的互相发现,尽快找到自己需要的资…
问题聚焦:     除了网络通信外,服务器程序通常还必须考虑许多其他细节问题,这些细节问题涉及面逛且零碎,而且基本上是模板式的,所以称之为服务器程序规范.     工欲善其事,必先利其器,这篇主要来探讨服务器程序的一些主要规范. 概览: Linux服务器程序一般以后台程序的形式运行,后台进程又称为守护进程. Linux服务器程序一般以某个专门的非root身份运行. Linux服务器程序通常是可配置的,命令行或者配置文件的形式. Linux服务器程序通常会在启动的时候生成一个PID文件,以记录该后…
TCP协议详解(理论篇) 2012-08-20      0个评论       作者:陈立龙 收藏    我要投稿 TCP协议详解(理论篇)   1.    与UDP不同的是,TCP提供了一种面向连接的.可靠的字节流服务.面向连接比较好理解,就是连接双方在通信前需要预先建立一条连接,这犹如实际生活中的打电话.助于可靠性,TCP协议中涉及了诸多规则来保障通信链路的可靠性,总结起来,主要有以下几点:       (1)应用数据分割成TCP认为最适合发送的数据块.这部分是通过“MSS”(最大数据包长度…
C++游戏服务器编程笔记 IP详解 IP详解 INTERNET的历史 上世纪60年底起源于美国 1992年,Internet上的主机超过了100万台 现在已经是现代文明人的必需品    TCP/IP的历史 Internet protocol suite (一套标准和规范) 早期探索 源自于美国国防部 TCP的实现 1973~1974年 TCP v1, TCP v2, TCP v3 和 IP v3,最终 TCP/IP v4 1975年双网测试(哈佛 伦敦大学) 1977年三网测试(美国,英国,挪威…
问题聚焦:     在简单地介绍线程的基本知识之后,主要讨论三个方面的内容:    1 创建线程和结束线程:    2 读取和设置线程属性:    3 线程同步方式:POSIX信号量,互斥锁和条件变量. Linux线程概述 线程模型 程序中完成一个独立任务的完整执行序列,即一个可调度的实体. 分为内核线程和用户线程 当进程的一个内核线程获得CPU的使用权时,它就加载并运行一个用户线程,可见,内核线程相当于用户线程运行的"容器". 一个进程可以拥有M个内核线程和N个用户线程, M<…
问题聚焦:     进程是Linux操作系统环境的基础.     本篇讨论以下几个内容,同时也是面试经常被问到的一些问题:     1 复制进程映像的fork系统调用和替换进程映像的exec系列系统调用     2 僵尸进程     3 进程间通信的方式之一:管道     4 3种System V进程通信方式:信号量,消息队列和共享内存 fork系统调用 定义: #include <sys/types.h> #include <unistd.h> pid_t fork( void…
在读 /Users/baidu/Documents/Data/Interview/服务器-检索端/<Linux高性能服务器编程.pdf> 其实之前读过,要面试了,需要温习. P260 Socket编程接口提供了一个创建全双工管道的系统调用:socketpair.squid服务器程序(见第4章)就是利用了socketpair创建管道.…
第三章 IP协议详解 TCP协议是TCP/IP协议族中的另外一个重要的协议,与IP协议相比,TCP协议更高进应用层.一些重要的socket选项都和TCP协议相关.这一章主要从如下方面学习: 1)TCP头部信息:每一个TCP头部会出现在每一个TCP报文段中 2)TCP状态转移过程:TCP连接的端到端都存在一个状态,从连接到断开都会经历一些状态变迁 3)TCP数据流:TCP数据是基于流的(交互数据流.成块数据流) 4)TCP数据流的控制:TCP的可靠性体现出(超时重传.拥塞控制) 1.TCP和UDP…
第二章 IP协议详解 什么是IP协议:IP 协议是TCP/IP协议族的动力,它为上层提供了无状态.无连接.不可靠的服务. IP 头部信息:头部信息会出现在每一个IP数据报上,便于记录IP通信的源端IP地址,目的端IP地址,指导IP分片和重组,以及指定部分通信行为. IP 数据报的路由和转发:除目标机器之外的所有主机和路由器上.它们决定数据报是否应该转发和如何转发. 无状态:即每次的IP数据报发送.传输和接收都是相互独立的,没有上下文关系.缺点:无法处理乱序和重复IP数据报:优点:简单.高效. 无…
第八章 高性能服务器编程框架 这一章主要介绍服务器的三个主要模块: I/O处理单元.逻辑单元.存储单元.另外服务器的模型有:C/S模型和P2P模型.虽然服务器模型比较多,但是其核心框架都一样,只是在于逻辑处理方面.如下图简单的介绍一台服务器或服务器机群模型的基本框架: 1.I/O模型 I/O处理单元:I/O处理单元是服务器管理客户连接的模块.主要是等待并受理新的客户连接接收客户数据,将服务器响应数据返回给客户端. 逻辑单元:就是一个个进程或者线程.用于处理客户数据,将结果传递给I/O处理单元或者…
很多人学习编程技术一般都通过一本编程语言的入门书籍,然后尝试做一些例子和小项目.但是这些都不能让我们深入的学习很多的编程技巧和高深技术,当然这个时候很多有经验的学习人员就会告诉大家,找一个好的开源软件理解它的设计与实现原理,阅读开源项目的源代码,都知道源码之前了无秘密.我也承认读源码能够快速提高我们的编程能力和编程思维,我也经常研究很多项目的源代码,有些是工作需要,有些是兴趣.但是我今天想说的都不是这些,我想说的是更高一层的学习方案,就是通过自己的实践实现一个开源软件,也许这个开源软件没有任何人…
传输层协议 分段是为了提高传输效率,封装是指给每个数据段添加一个编号 端到端的传输是逻辑上的端到端,并不是真正意义上的发送方某层与接收方某层之间的传输 IP协议只是保证数据报文发送到目的地,为主机之间提供逻辑通信:而传输层协议保证主机A的进程能够顺利对接主机B相应的进程,为应用进程之间提供端到端的逻辑通信 两台主机进程间通信条件: 两台主机(IP地址定义) 本地进程(端口定义) 远程主机(IP地址定义) 远程进程(端口定义) IP层主提供IP地址,起到路由寻址的作用,把数据根据IP层的机制送到目…
目录 搭建Linux云服务器 购买与基本配置 链接linux服务器 目录结构 基本命令 软件安装 Linux 系统启动 启动过程 运行级别 Nginx详解 1.安装 方式一:yum安装 方式二:自定义目录安装 2.启动nginx 3.解决80端口被占用 4.彻底卸载和删除CentOS上的Nginx 目录介绍 配置 nginx.conf 配置文件语法 配置虚拟主机 开启gzip 动手发布一个自己的项目到服务器上 一.购买一个阿里云服务器 二.putty 登陆服务器 三.服务器上安装nginx 四.…
TCP头格式 注意以下几点: TCP的包是没有IP地址的,那是IP层上的事.但是有源端口和目标端口. 一个TCP连接需要四个元组来表示是同一个连接(src_ip, src_port, dst_ip, dst_port)准确说是五元组,还有一个是协议.但因为这里只是说TCP协议,所以,这里我只说四元组. 注意上图中的四个非常重要的东西: Sequence Number是包的序号,用来解决网络包乱序(reordering)问题. Acknowledgement Number就是ACK——用于确认收到…
为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用.只有把它们联合起来,电脑才会发挥出它最大的潜力.于是人们就想方设法的用电线把电脑连接到了一起. 但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息.因而他们需要定义一些共通的东西来进行交流,TCP/IP就是…
TCP 协议是 更靠近应用层,因此在应用程序中具有更强可操作性,一些重要 socket 选项都和 TCP 协议相关. TCP 头部信息:TCP 头部信息出现在每个 TCP 报文段中,用于指定通信的源端端口号.目的端端口号.管理 TCP 连接.控制两个方向的数据流. TCP 状态转移信息:TCP 连接的任意一端都是一个状态机.在 TCP 连接从建立到断开的整个过程中,连接两端的状态机将经历不同的状态变迁. TCP 数据流:通过分析 TCP 数据流,我们可以从网络应用程序外部来了解应用层协议和通信双…
Tcp协议作为传输层的重要协议之一,想必每个稍有网络编程知识的人都不会感觉到陌生,三次握手/四次挥手这些基本概念也都是耳熟能详.但是当你们进行具体的网络编程的时候发现有很多事情并没有想象中的那么简单,会遇到很多·奇奇怪怪·的问题,说白了还是对于tcp协议的了解太过浮于表面.作为一个开发人员而言可能经常会去网上搜索一下有没有相关答案,但是即便问题解决了也是知其然不知其所以然.而不停的搜索答案试错是一种十分低劣的解决问题手法,个人观点认为当你遇见一个陌生的问题时如果时间允许的话先去了解它,这样解决问…