博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP/IP详解学习笔记(1)-基本概念
阅读量:5919 次
发布时间:2019-06-19

本文共 1436 字,大约阅读时间需要 4 分钟。

hot3.png

目录

为什么会有TCP/IP协议

在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。

但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。

TCP/IP协议分层

提到协议分层,我们很容易联想到ISO-OSI的七层协议经典架构,但是TCP/IP协议族的结构则稍有不同。如图所示

TCP/IP协议族按照层次由上到下,层层包装。最上面的就是应用层了,这里面有http,ftp,等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次(不要告诉我你没用过udp玩星际)。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据(后面会讲到)以确定传输的目标。第四层是叫数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。再往下则是硬件层次了,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等(这些我们就不用关心了,我们也不做网卡),所以有些书并不把这个层次放在tcp/ip协议族里面,因为它几乎和tcp/ip协议的编写者没有任何的关系。发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从得到的数据包解开,最后拿到需要的数据。这种结构非常有栈的味道,所以某些文章也把tcp/ip协议族称为tcp/ip协议栈。

一些基本的常识

在学习协议之前,我们应该具备一些基本知识。

  • 互联网地址(ip地址)

    网络上每一个节点都必须有一个独立的Internet地址(也叫做IP地址)。现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4标准,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为五类,我们常用的是B类地址。具体的分类请参考其他文档。需要注意的是IP地址是网络号+主机号的组合,这非常重要。

  • 域名系统

    域名系统是一个分布的数据库,它提供将主机名(就是网址啦)转换成IP地址的服务。

  • RFC

    RFC是什么?RFC就是tcp/ip协议的标准文档,在我们可以看到RFC那长长的定义列表,现在它一共有4000多个协议的定义,当然,我们所要学习的,也就是那么十几个协议而已。

  • 端口号(port)

    注意,这个号码是用在TCP,UDP上的一个逻辑号码,并不是一个硬件端口,我们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了而已。

  • 应用编程接口

    现在常用的编程接口有socket和TLI。而前面的有时候也叫做“Berkeley socket”,可见Berkeley对于网络的发展有多大的贡献。

转载于:https://my.oschina.net/u/994235/blog/132401

你可能感兴趣的文章
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
你对CommonJS规范了解多少?
查看>>
HTML、JS与PHP之间的数据传输
查看>>
opencv图片处理与OCR识别
查看>>
《Android艺术开发探索》学习笔记之View的事件体系(View的弹性滑动)
查看>>
从零开始学Python(九):搭建一个基于SMTP的简单邮件预警系统
查看>>
Springmvc+mybatis+Dubbo+ZooKeeper+Redis+KafKa
查看>>
命令行-程序员方式Mp4视频转换成Gif格式图片(工具)
查看>>
[译] 让 Apache Cassandra 尾部延迟减小 10 倍,已开源
查看>>
08 下拉刷新控件SwipeRefreshLayout介绍
查看>>
快速排序及优化
查看>>
『程序员必备软件』—— 短小精悍的GIF录制软件LICEcap
查看>>
中小企业如何选择OA协同办公产品?最全的对比都在这里了
查看>>
面试题:margin的兼容问题?或者叫margin垂直方向合并问题?(两个盒子margin-bottom和margin-top之间的关系?)...
查看>>
JVM面试知识点梳理
查看>>
1.5.3 Python装饰器
查看>>
MySQL浅谈(索引、锁)
查看>>
阿里云函数计算
查看>>
Python爬虫追美剧?你咋这么溜溜溜『上篇』
查看>>
获取系统内存信息
查看>>