Linux 高性能服务器编程——TCP/IP协议族
- TCP协议(传输控制协议):为应用层提供可靠的,面向链接和基于流的服务。使用超时重传,数据确认方式确保可靠的连接。没有边界限制。
- UDP协议(用户数据报协议):不可靠,无连接和基于数据报的服务。数据报有一个长度作为读写的最小单位。
- SCTP协议(流控制传输协议):相对较新的传输层协议,为了在因特网上传输电话信号而设计的。
- TCP报文由TCP头部信息和TCP内核缓冲区数据构成。当要向TCP连接写入发送数据时,内核中的TCP模块首先把这些数据复制到与该连接对应的TCP内核发送缓冲区中,然后TCP模块调用IP模块提供的服务,传递的参数包括TCP头部信息和TCP发送缓冲区中的数据,即TCP报文段。
- 需要注意的一点是,TCP是发送数据后,依然在缓冲区中保存有副本,但是UDP发送完之后,直接丢弃缓冲区中的数据。
- IP数据报也包括头部信息和数据部分,其中数据部分就是一个TCP报文段、UDP数据报或者ICMP报文。
- 传输媒介不同,帧的类型也不同。比如:以太网上传输的是以太网帧,而令牌环网络上传输的则是令牌环帧。
- 因为ICMP、TCP、UDP都使用IP协议,所以IP数据包头部使用16位的协议字段区分它们。
- TCP报文段和UDP数据包则通过其头部的16位端口号字段来区分上层应用程序。
- 源物理地址:00:16:d3:5c:b9:e3
- 目的物理地址:ff::ff::ff::ff::ff::ff,以太网广播地址,用以表示整个LAN,该LAN上的所有机器都会收到并处理这样的帧
- 类型字段:0x806,表示分用的目标是ARP模块
- 以太网帧:42字节,实际是46字节,tcpdump未统计以太网帧尾部的4字节CRC字段,其中数据部分长度28字节
- Request:表示这是一个ARP请求
- 查询:who-has 192.168.1.109 tell 192.168.1.108 表示查询ip地址为192.168.1.109的机器的物理地址
- 将应用程序从用户缓冲区中复制到TCP/UDP内核发送缓冲区,以交付内核来发送数据。如,从内核TCP/UDP接收缓冲区中复制数据到用户缓冲区,以读取数据;
- 应用程序可以通过它们来修改内核中各层协议的某些头部信息或其他数据结构,从而精细地控制底层通信的行为。
Linux 高性能服务器编程——TCP/IP协议族的更多相关文章
- linux高性能服务器编程 (二) --IP协议详解
第二章 IP协议详解 什么是IP协议:IP 协议是TCP/IP协议族的动力,它为上层提供了无状态.无连接.不可靠的服务. IP 头部信息:头部信息会出现在每一个IP数据报上,便于记录IP通信的源端IP ...
- Linux 高性能服务器编程——TCP协议详解
问题聚焦: 本节从如下四个方面讨论TCP协议: TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流 TCP状态转移过程:TCP连接的任意一 ...
- linux高性能服务器编程 (一) --Tcp/Ip协议族
前言: 在学习swoole入门基础的过程中,遇到了很多知识瓶颈,比方说多进程.多线程.以及进程池和线程池等都有诸多的疑惑.之前也有学习相关知识,但只是单纯的知识面了解.而没有真正的学习他们的来龙去脉. ...
- 服务器编程入门(1)TCP/IP协议族
问题聚焦: 简单地梳理一下TCP/IP各层的功能和常用协议 详细了解ARP(数据链路层)和DNS(应用层)协议的工作原理 1 TCP/IP协议族体系结构 数据链路层: 职责:实现网卡接口的网络 ...
- Linux 高性能服务器编程——IP协议详解
1 IP服务特点 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的服务. 无状态:IP通信双方不同步传输数据的状态信息,因此IP数据包的发送.传输和接收都是无序的. ...
- linux高性能服务器编程 (三) --TCP协议详解
第三章 IP协议详解 TCP协议是TCP/IP协议族中的另外一个重要的协议,与IP协议相比,TCP协议更高进应用层.一些重要的socket选项都和TCP协议相关.这一章主要从如下方面学习: 1)TCP ...
- Android网络编程系列 一 TCP/IP协议族
在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...
- Linux 高性能服务器编程——Linux网络编程基础API
问题聚焦: 这节介绍的不仅是网络编程的几个API 更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系. 这节主要介绍三个方面的内容:套接字(so ...
- linux高性能服务器编程
<Linux高性能服务器编程>:当当网.亚马逊 目录: 第一章:tcp/ip协议族 第二章:ip协议族 第三章:tcp协议详解 第四章:tcp/ip通信案例:访问Internet 第五章: ...
随机推荐
- [C#]使用 Jenkins 为 .Net Core 实现持续集成/部署
在前后端分离开发的项目当中为了避免重复构建发布,我们需要部署一个持续发布环境,而目前的开发环境服务器都是基于 CentOS 的,因此每次在本地发布之后还需要打包,上传,部署,十分繁琐.故这里采用了比较 ...
- Python---老王开枪
class Person(object): """人类""" def __init__(self,name): super(Person,s ...
- ActiveMQ笔记:源码分析
本文对ActiveMQ的启动过程,以及BrokerService,TransportConnector和NetworkConnector等几个重要的模块的代码做一个简要的分析. 启动过程 如果要快速地 ...
- [HNOI 2015]开店
Description 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到 人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱.这样的 想法当然非常好啦,但是她们也发现 ...
- [Codeforces 864B]Polycarp and Letters
Description Polycarp loves lowercase letters and dislikes uppercase ones. Once he got a string s con ...
- ●BZOJ 2154 Crash的数字表格
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2154 题解: 莫比乌斯反演. 题意还是很清楚的,就不赘述了. 显然有 $ANS=\sum_{ ...
- 【线段树】【BZOJ1798】【AHOI2009】维护序列
还是那个学弟@lher出的丧题之一. 链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1798 题意简析:就是题目啊... 解题思路:显然是线段树 ...
- hdu5586 BestCoder Round #64 (div.2)
问题描述 给n个数{A}_{1},{A}_{2}....{A}_{n}A1,A2....An,你可以选择一个区间(也可以不选),区间里每个数x变成f(x),其中f(x)=(1890x ...
- Python中模块之os的功能介绍
Python中模块之os的功能介绍 1. os的变量 path 模块路径 方法:os.path 返回值:module 例如:print(os.path) >>> <module ...
- C语言程序设计第三次作业 —— 选择结构(1)
(一)改错题 计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. (错误一) 错误原因及改正:第九行语句结尾缺少半角分号,添加分号即可改正 (错误二) 错误原因及改 ...