《TCP/IP入门经典》摘录--Part 1
TCP/IP基础知识
什么是TCP/IP
Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。TCP/IP协议定义了网络通信过程,更重要的是,定义了数据单元的格式和内容,以便接收计算机能够正确解释接收到的消息。
TCP/IP模块化设计的主要优点是:由于TCP/IP的模块化设计,TCP/IP协议栈能够方便地进行修改来适应特定的硬件和操作环境。将网络软件划分为具体的、设计良好的组件,有助于开发人员更容易地编写出于协议系统进行交互的程序。
网络和协议
网络:网络是计算机或类似计算机的设备之间通过常用传输介质进行通信的集合。通常情况下,传输介质是绝缘的金属导线,它用来在计算机之间携带电脉冲,但是阐述介质也可以是电话线,甚至没有线路(比如在无线网络中)。
网络协议:网络协议就是一套通用规则,用来帮助定义复杂数据传输的过程。数据传输从一台计算机上的应用程序开始,通过计算机网络硬件,经过传输介质到正确目的地,然后上传到目的地计算机网络硬件,最后到达负责接收的应用程序。
1、网络协议簇的规则

2、TCP/IP模型的协议层

网络访问层:提供了与物理网络连接的接口。针对传输介质设置数据的格式,根据硬件的物理地址实现数据的寻址,对数据在物理网络中的传递提供错误控制。
网际层:提供独立于硬件的逻辑寻址,从而让数据能够在具有不同物理结构的子网之间传递。提供路由功能来降低流量,支持网间的数据传递(术语“网间”(internetwork)指的是多个局域网互相连接而形成的较大的网络,比如大公司里的网络或Internet)。实现物理地址(网络访问层使用的地址)与逻辑地址的转换。
传输层:为网络提供了流量控制、错误控制和确认服务。充当网络应用程序的接口。
应用层:为网络排错、文件传输、远程控制和 Internet 操作提供了应用程序,还支持应用编程接口(API),从而使得针对特定操作系统编写的程序能够访问网络。本书后面的章节将详细介绍TCP/IP协议每一层的行为。
3、OSI七层模型

物理层:把数据转换为传输介质上的电子流或模拟脉冲,并且监视数据的传输。
数据链路层:提供与网络适配器相连的接口,维护子网的逻辑链接。
网络层:支持逻辑寻址与路由选择。
传输层:为网络提供错误控制和数据流控制。
会话层:在计算机的通信应用程序之间建立会话。
表示层:把数据转换为标准格式,管理数据加密与压缩。
应用层:为应用程序提供网络接口,支持文件传输、通信等功能的网络应用。
4、数据包
在数据发送过程中,其流程是从堆栈的上到下,每一层都把相关的信息(被称为“报头”)捆绑到实际的数据上。包含报头信息和数据的数据包就作为下一层的数据,再次被添加报头信息和重新打包。当数据到达目的计算机时,接收过程恰恰是相反的,在数据从下到上经过协议栈的过程中,每一层都解开相应的报头并且使用其中的信息。

如上图所示,在每一层,都要使用该层的报头信息对数据进行重新打包
数据包在每一层具有不同的形式和名称。下面是数据包在每一层的名称。
在应用层生成的数据包被称为消息。
在传输层生成的数据包封装了应用层的消息,如果它来自于传输层的TCP协议,就被称为分段;如果来自于传输层的UDP协议,就被称为数据报。
在网际层的数据包封装了传输层的片段,被称为数据报。
在网络访问层的数据包封装了数据报(而且可能对其进行再分解),被称为帧。帧被访问层里的最低子层转化为比特流。
5、TCP/IP网络概述
基本的TCP/IP联网系统:

基本场景如下:
1.数据从工作于应用层的协议、网络服务或应用编程接口(API)通过TCP或UDP端口传递到两个传输层协议(TCP或UDP)中的一个。程序可以根据需要通过TCP或UDP访问网络。
TCP是面向连接的协议。与无连接的协议相比,面向连接的协议提供更复杂的流量控制和错误控制。TCP能够确保数据的发送质量,比UDP更可靠,但由于需要进行额外的错误检测和流量控制,因此比UDP的速度慢。
UDP是个无连接的协议,比 TCP快,但是不可靠,它把错误控制的责任推给了应用。
2.数据分段传递到网际层,IP协议在此提供逻辑寻址信息,并且把数据封装为数据报。
3.IP 数据报进入网络访问层,传递到与物理网络相连接的软件组件。网络访问层创建一个或多个数据帧,从而进入到物理网络。在像以太网这样的局域网系统中,帧可能包含从表格里获得的物理地址信息,而这些表格是由网际层的ARP维护的(ARP是地址解析协议,把IP地址转换为物理地址)。
4.数据帧被转化为比特流,通过网络介质进行传输。
《TCP/IP入门经典》摘录--Part 1的更多相关文章
- 《TCP/IP入门经典》摘录--Part 3
TCP/IP协议系统 3.子网划分和CIDR 子网 划分网络 为什么需要划分子网? 子网划分就是在网络 ID 之下提供了第 2 层逻辑组织.路由器能够把数据报发送给网络里的某个子网地址(一般对应于一个 ...
- 《TCP/IP入门经典》摘录--Part 2
TCP/IP协议系统 1.网络访问层 网卡(network adapter),即网络接口板,又称网络适配器或NIC (网络接口控制器),是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,由 ...
- TCP/IP的经典网络编程
TCP/IP网络编程之四书五经 ...
- TCP/IP入门(4) --应用层
/** 本篇博客由汗青ZJF整理并发布, 转载请注明出处: http://blog.csdn.net/zjf280441589/article/category/1854365 */ TCP/IP中的 ...
- TCP/IP入门(2) --网络层
/** 本篇博客由 126(127不可用) 2^24 -2 B 2^14 -1 128.1 191.255 2^16 -2 C 2^21 -1 192.0.1 223.255.255 2^8 -2 D ...
- TCP/IP入门(1) --链路层
/** 本博客由汗青ZJF整理并发布, 转载请注明出处: http://blog.csdn.net/zjf280441589/article/category/1854365 */ TCP/IP体系结 ...
- TCP/IP入门(3) --传输层
原文:http://blog.csdn.net/zjf280441589/article/category/1854365 传输层的主要功能 1)传输层为应用进程之间提供端到端的逻辑通信(网络层是为主 ...
- TCP/IP入门学习(2)---OSI分层
一.会话层以上的处理 1.表示层 将数据从主机特有的格式转换为网络标准传输格式.以此使得不同环境之间的通信成为可能. 2.会话层 即决定使用哪个连接或者哪种连接方式将数据发送出去.会话层也会在数首部添 ...
- TCP/IP入门学习(1)---分层概述
本文旨在记述一些学习中的笔记 OSI分层:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层 详细点: 1.应用层:为应用程序提供服务并规定程序中通信相关细节. 2.表示层:将应用处理的信息转 ...
随机推荐
- python进阶----深拷贝&浅拷贝
复制需要区分,,复制的是源文件的数据,还是指向源文件数据的地址 1.引用 b=a时,理解为b指向了a指向的数据,相当于引用复制 a=[1,2] b=a #验证复制的是数据还是地址 #1.查看ab的 ...
- promise链式调用
var that = this;that.hello().then(res => { return that.world(res);}).then(res => { console.log ...
- Fragment基础学习
https://blog.csdn.net/lmj623565791/article/details/37970961
- Linux内核本地提权漏洞(CVE-2019-13272)
漏洞描述 kernel / ptrace.c中的ptrace_link错误地处理了想要创建ptrace关系的进程的凭据记录,这允许本地用户通过利用父子的某些方案来获取root访问权限 进程关系,父进程 ...
- phpcmsv9 后台统计编辑发稿数量
直切正题: 每个人,每个栏目,发稿数量统计 SELECT a.realname AS 姓名, c.catname AS 栏目名称, count(1) AS 发稿量FROM v9_news bz, v9 ...
- Redis事务与可分布式锁
1 Redis事务 1.1 Redis事务介绍 l Redis的事务是通过MULTI,EXEC,DISCARD和WATCH这四个命令来完成的. l Redis的单个命令都是原子性的,所以 ...
- JS:javascript 函数后面有多个小括号是怎么回事?f( )( )( )...
有时我们看见js函数后面跟着多个小括号是怎么回事?f( )( )( )... f()意思是执行f函数,返回子函数 f()()执行子函数,返回孙函数 f()()()执行孙函数 ()()表示定义并执行,使 ...
- Python该怎么入门?Python入门教程(非常详细)
Python要学多久可以学会,达到精通呢? 任何知识都是基础入门比较快,达到通晓的程序是需求时日的,这是一个逐渐激烈的进程. 通晓任何一门编程语言,都需求通过大量的实践来积累经验,解决遇到的各种疑难问 ...
- POJ2528Mayor's posters 线段树,离散化技巧
题意:一个坐标轴从1~1e7,每次覆盖一个区间(li,ri),问最后可见区间有多少个(没有被其他区间挡住的) 线段树,按倒序考虑,贴上的地方记为1,每次看(li,ri)这个区间是否全是1,全是1就说明 ...
- 牛客CSP-S提高组赛前集训营4 赛后总结
复读数组 分成 3 种区间算答案: 一个块内的区间 两个块交界处,长度小于块长的区间 长度不小于块长的区间 对于第三种区间,容易发现每个区间的权值一样,只需要算出个数即可. 对于前两种空间,我的思路是 ...