惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
博客园 - Franky
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
人人都是产品经理
人人都是产品经理
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
有赞技术团队
有赞技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
C
Check Point Blog
爱范儿
爱范儿
T
The Blog of Author Tim Ferriss
aimingoo的专栏
aimingoo的专栏
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
云风的 BLOG
云风的 BLOG
MyScale Blog
MyScale Blog
Microsoft Security Blog
Microsoft Security Blog
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)

博客园 - 斌伯

26上半年流水账 【DX12龙书】第十一章 模板 顺序无关半透明资料 【DX12龙书】第十章 混合 【DX12龙书】第九章 纹理贴图 【DX12龙书】第八章 光照 【DX12龙书】第七章 利用Direct3D绘制几何体(续) 【DX12龙书】第六章 利用Direct3D绘制几何体 【DX12龙书】第五章 渲染管线 【DX12龙书】第四章 Direct3D的初始化 Godot开发环境与学习资源 源码开放的引擎研究 海龟交易法操作商品期货 重新开始 使用node_redis进行redis数据库crud操作 ACTGame项目 我所理解的网络游戏<?>:战斗逻辑设计 我所理解的网络游戏<一>:网游的顶层设计 《Real Time Rendering》第四章 图形变换 《程序员的自我修养》学习笔记(一):简介 《Real Time Rendering》第三章 图形处理单元 《Windows via C/C++》学习笔记(二):Working with Characters and String 《Real Time Rendering》第二章 图形渲染管线 《Real Time Rendering》第三版 翻译 《Windows via C/C++》学习笔记(一):Error handling
《TCP/IP协议详解》学习笔记(一):概述
斌伯 · 2013-01-16 · via 博客园 - 斌伯

1. 网络分层

  • TCP/IP模型层次

clip_image002

OSI参考模型与TCP/IP模型层次关系

链路层:处理各种传输媒介的物理接口细节;

网络层:处理分组在网络中的活动,提供逐跳(Hop by hop)的通信;

运输层:为两台主机上应用程序提供端对端(End to end)的通信;

应用层:处理特定应用程序细节。

端系统(End system,如主机)间通信,需要应用层和运输层的端到端协议;

而端系统与中间系统(Intermediate system,如路由器)间的通信的,则需要网络层的逐跳协议。

网络层IP只是尽可能快地将分组从源节点送到目的节点,是不可靠的服务;

TCP采用超时重传、发送和接收端到端确认分组等机制,在IP服务的基础上实现可靠的服务。

clip_image002[5]

TCP/IP协议族间不同层次协议的通信

  • 连接网络的方法

路由器具有两个以上的网络接口层,称之为多接口(Multihomed),是在网络层对网络进行互连,功能为单纯把分组从一个接口传递到另外一个接口;

网桥是链路层上对网络进行互连;

TCP/IP更倾向于使用路由器而非网桥连接网络。

2. 数据的封装与分用

  • 数据的封装

应用程序往TCP传输数据时,数据被送入协议栈,然后逐层通过,每层在收到的数据上添加该层的首部信息。

TCP层 --> IP层:TCP报文段、TCP段(TCP segment);

IP层 --> 链路层:IP数据报(IP datagram)。关于IP层到链路层间数据传输的单元,更准确的说法应该是分组(packet)。分组既可以是IP数据报,也可以是IP数据报的一个片(fragment)。

以太网数据帧(即IP数据报部分)的物理特征是长度必须介于46 ~ 1500字节间。

clip_image002[9]

数据进入协议栈的封装过程

运输层协议在生成报文首部时需要传入一个应用程序的标示符,TCP和UDP都使用一个16bit的端口号来标识不同的应用程序。TCP和UDP的首部都包含源端口号和目标端口号;

IP首部中有一个长度为8bit的协议域,用于标识数据所属协议,1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议;

以太网帧首部中含有16bit的帧类型域,其中以某种形式标识生成数据的网络协议。

  • 以太网帧的分用

每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议,该过程叫分用(Demultiplexing)。

clip_image002[11]

以太网数据帧分用的过程

3. 杂项

  • 互联网地址

网络地址由网络号与主机号组成;

五类地址分类:

类别

IP地址组成

范围

A类

0.0.0.0 ~ 127.255.255.255

B类

128.0.0.0 ~ 191.255.255.255

C类

1

1

0

网络号21位

主机号8位

192.0.0.0 ~ 223.255.255.255

D类

1

1

1

0

多播组号28位

224.0.0.0 ~ 239.255.255.255

E类

1

1

1

1

0

后备使用27位

240.0.0.0 ~ 255.255.255.255

三类IP地址:

单播地址(目的端为单个主机);

广播地址(目的端为给定网络上的所有主机);

多播地址(目的端为同一组内所有主机)。

  • 域名系统

域名系统是一个分布的数据库,提供IP地址和主机名间的映射信息。

  • 客户--服务器模型

服务器为客户提供一些特定的服务;

服务分为:

重复型,客户独占服务器,在处理客户请求时服务器不能为其他客户机提供服务;

并行型,服务器启动新的服务来处理客户请求,完成后该服务将被终止。可以并发处理客户机的请求。

  • 端口号

TCP和UDP采用16bit的端口号来识别应用程序;

任何TCP/IP实现所提供的服务都用知名端口(1~1023),这些知名端口由IANA管理;

Unix系统有保留端口。

客户端端口

客户端不关心其使用的端口号,仅需保证端口号在机器上唯一即可;

又称为临时端口,仅在用户运行客户端程序时存在;而服务器只要开机其服务就运行;

大多数TCP/IP实现给临时端口分配1024~5000之间的端口;大于5000的端口是为其他服务预留。

  • 标准化

标准化过程;

RFC;

标准的简单服务;

互联网;

TCP/IP软件实现;

TCP/IP应用编程接口:socket和TLI(Transport Layer Interface)