tcp/ip 卷一 读书笔记(1)tcp/ip 概述
TCP/IP协议概述
术语
广域网 WAN
局域网 LAN
TCP/IP四层网络模型
TCP/IP通常被认为是一个四层协议系统
- 网络接口层 包括arp,rarp协议,包括操作系统中的网卡驱动程序和对应的网络接口卡,一起处理数据在电缆之间传输的细节,这一层是同一个链路网络内,不同接口之间通过mac地址通信。arp协议是根据ip地址,请求对应的mac地址,rarp协议是根据mac地址,请求ip地址(可以用来做开机获取ip地址,实际现在已经不这么做了),二层的典型设备是交换机,交换机内有一张mac地址和对应的端口规则的表,每当收到一个包,如果是arp广播包,那么就将这个包从这个交换机的所有接口(这里不考虑vlan先),如果不是广播包,交换机根据目的mac地址来匹配应该将数据转发往哪个端口,然后从对应的端口扔出去。网桥是低端版的交换机,也有类似的功能,可以在链路层上对网络进行互联,linux bridge就是虚拟的网桥。交换机和网桥隔离冲突域。
- 网络层 包括IP,ICMP,IGMP协议,ip地址和路由设备,都是网络层的概念,链路层的通信,只能在一个或者多个交换机连接的网络内,其实算是同一个网络,里面的机器mac地址不能冲突,一个arp包,所有的机器都能收到,所以我们即使不考虑代价的问题,我们也不会把全世界所有的机器都直接接到,一个这样的网络内(wan),我们需要会把自己的网络,链路层上同外界的网络隔离,通过路由设备和他们通信,这样好处多多,后面再分析。路由设备是网络层的设备,它存储ip地址和对应的接口的对应关系,通过路由选择协议,根据目的ip地址选择下一跳的ip地址(也会是个路由设备或者虚拟路由设备或者目的地址),通过arp协议获取到下一跳的mac地址,修改数据包,将目的mac地址设置成这个地址,扔给链路层,由链路层送出。路由器隔离广播域。(笔记五中更详细的介绍了通信过程,以及为什么路由器隔离广播域)
- 传输层 包括tcp协议,udp协议。网络层的传输主要是一个ip+端口号,将数据发送给另一个ip+端口号,这个端口号,是用来区分不同的应用程序,告诉操作系统,这个包是发给那个程序的,该扔到哪个缓存里面,由哪个程序负责读出。udp是不可靠的传输,不理会传输的过程中是否发生丢包,通常主机内的通讯都使用udp,主机间的通信,如果使用udp,需要自己做好传输可靠性的检验。tcp的设计思想是尽可能可靠的传输,保证数据已定能传输到,尽量避免拥堵,所以tcp设计不是为了占据更多的带宽而设计的,多个链接可以提高传输速度,tcp的设计在网络速度越来越快的情况下,暴漏出很多缺陷,后面再谈。
- 应用层,各种应用工作的层次
还可以看OSI七层网络模型
互联网的地址
网络地址分类,IPV4的情况,IP地址分为A,B,C,D,E五类,各自所处的范围如下:
| 类别 | 格式 | 最大网络数 | IP地址范围 | 私有地址范围 |
|---|---|---|---|---|
| A | 0[7b netNum][24b hostNumber] | 126(2^7-2) | 0.0.0.0-127.255.255.255 | 10.0.0.0-10.255.255.255 |
| B | 10[14b netNum][16b hostNumber] | 16382(2^14-2) | 128.0.0.0--191.255.255.255 | 172.16.0.0-172.31.255.255 |
| C | 110[22b netNum][8b hostNumber] | 2097150(2^21-2) | 192.0.0.0-223.255.255.255 | 192.168.0.0-192.168.255.255 |
| D | 1110[28b multcast number] | N/A | 224.0.0.0-239.255.255.255 | N/A |
| E | 11110[27b reserved number] | N/A | 240.0.0.0-255.255.255.255 | N/A |
最大网络数-2是因为全0和全1的网络号(netnum)是非法的。
D类地址是多播地址,E类是预留地址。
私有地址是非Internet网络使用的地址,公网上的路由器不会转发目的地址是私有地址的数据
无类别域间路由
A,B,C等分类地址的划分是最初的设计,后来人们遇到这样的问题
In the early 1990s, after the adoption of subnet addressing to ease one form of growing pains, the Internet started facing a serious set of scaling problems. Three particular issues were considered so important as to require immediate attention:
- By 1994, over half of all class B addresses had already been allocated. It was expected that the class B address space would be exhausted by about 1995.
- The 32-bit IPv4 address was thought to be inadequate to handle the size of the Internet anticipated by the early 2000s.
- The number of entries in the global routing table (one per network number), about 65,000 in 1995, was growing. As more and more class A, B, and C routing entries appeared, routing performance would suffer.
为了解决这些问题,现在我们引入了无类别域间路由的概念,使用cidr的方式,用网络地址加上掩码来表示一个网络,如
172.16.40.128/25,10.0.0.25/32. cidr的本质在于,使用掩码分割网络,表示网络的范围,而不是根据网络类型。cidr的好处在于,提高网络地址的利用率,分配一个网络,可以只分配,2个,4个,8个,16个...地址,而不是256,255256,256256*256。
cidr技术减缓了ipv4地址耗尽的趋势,类似的还有nat技术,nat技术工作在路由设备上,传输层,可以让很多用户共用一个公网ip地址,而不是所有人都接入到Internet中,也起到减缓ipv4地址消耗的作用。
关于cidr和nat,可以看:协议森林14 逆袭 (CIDR与NAT)
cidr同时还能够支持路由汇聚的功能,减少互联网上的路由表项的数目,以解决引用中提到的第三个问题,可以看 cidr_维基百科
各种数据报的格式
tcp的数据包:
| link header | ip Header | tcp Header | data | link trailer |
|---|---|---|---|---|
| 14bit | 20bit | 20bit | 不固定 | 4bit |
udp的数据包:
| link header | ip Header | tcp Header | data | link trailer |
|---|---|---|---|---|
| 14bit | 20bit | 8bit | 不固定 | 4bit |
icmp和igmp数据包,主要在ip header中的协议值区分:
| link header | ip Header | data | link trailer |
|---|---|---|---|
| 14bit | 20bit | 不固定 | 4bit |
arp和rarp数据包,主要在以太网首部中的的帧类型区分:
| link header | data | link trailer |
|---|---|---|
| 14bit | 不固定 | 4bit |
各种去掉link header和link trailer之外的数据,最大有一个长度,超过这个长度的数据交给链路层,链路层会不处理这个数据,会直接丢弃。
这个最大长度我们称为mtu,ip层交给link层的数据长度一定要小于等于MTU值。
在tcp中,还有mss值得概念,指上图tcp数据包中的data的大小,后面再谈。
参考:
TCP/IP详解 卷一
TCP/IP详解 卷二
等
tcp/ip 卷一 读书笔记(1)tcp/ip 概述的更多相关文章
- tcp/ip 卷一 读书笔记(5)arp和rarp 同网段和不同网段之间的通信过程
arp和rarp 同网段和不同网段之间的通信过程 IPv6中已经没有arp rarp协议,所以这里都是IPv4. 链路层使用以太网地址来确定目的地址,应用则常使用ip地址通信 arp协议是指从ip地址 ...
- tcp/ip 卷一 读书笔记(2)物理层和链路层网络
物理层和链路层网络 术语 链路 是一对相邻结点间的物理线路,中间没有任何其他的交换结点. 数据链路 除了物理线路外,还必须有通信协议来控制这些数据的传输. 帧 数据链路层的协议数据单元(PDU) 串行 ...
- tcp/ip 卷一 读书笔记(3)为什么既要有IP地址又要有MAC地址
网络层 首先明确一点,并不是所有的网络之间传输数据都需要mac地址和ip地址,比如说点对点线路之间的通信就没有MAC地址,网络层使用ipx协议时就没有ip地址,但是在当前的主流网络中,我们都使用ip地 ...
- 《图解tcp/ip》读书笔记(二)
<图解tcp/ip>读书笔记(二) 本周主要阅读的是本书的第三章--数据链路. 当然了,从某些角度讲,我认为这一章就是计算机网络的最基本的内容之一.整章讲述了数据链路层的作用和相关技术,主 ...
- 《图解tcp/ip》读书笔记(一)
我先讲三句话: 一."万物互联的时代到了."我们生活在这样一个互联网急速发展的时代,也许很快就会发现,你能接触到的一切都可以连接到互联网了,电脑.手机这 ...
- 《图解TCP/IP》读书笔记
一.国际惯例:书托 这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识.掌握TCP/IP的基本技能. 书中讲解了网络基础知识.TCP/IP基础知识.数据链路.IP协议.IP协 ...
- 《图解TCP/IP》读书笔记(转)
reference: https://www.cnblogs.com/edisonchou/p/5987827.html 一.国际惯例:书托 这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TC ...
- C#基础知识之图解TCP IP》读书笔记
一.网络基础知识 1. 计算机使用模式的演变 2.协议 协议就是计算机与计算机之间通过网络实现通信事先达成的一种“约定”.这种“约定”使那些由不同厂商的设备.不同的CPU以及不同的操作系统组成的计算机 ...
- TCP/IP详解 读书笔记:TCP:传输控制协议
TCP的服务 TCP为应用层提供一种面向连接的.可靠的字节流服务. 一个TCP连接中,仅有两方进行彼此通信,所以广播和多播不能用于TCP. TCP通过以下方式提供可靠性: 应用数据被切割为TCP认为最 ...
随机推荐
- Python 正则表达式 (python网络爬虫)
昨天 2018 年 01 月 31 日,农历腊月十五日.20:00 左右,152 年一遇的月全食.血月.蓝月将今晚呈现空中,虽然没有看到蓝月亮,血月.月全食也是勉强可以了,还是可以想像一下一瓶蓝月亮洗 ...
- strstr()与find()
- 《css定位 position》课程笔记
这是我学习课程css定位 position时做的笔记! 本节内容 html的三种布局方式 position可选参数 z-index 盒子模型和定位的区别 侧边栏导航跟随实例 html的三种布局方式 三 ...
- js禁止滚动条移动
js禁止滚动条移动 var scrollFunc=function(e){ e=e||window.event; if (e&&e.preventDefault){ e.prevent ...
- scala 小结(一)
Scala 是什么?(What is scala?) 引用百度百科对于scala的定义: Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编 ...
- 揭开Java内存管理的面纱
前言 相对于C.C++这些高性能语言,Java有着让此类程序员羡慕的功能:内存自动管理.似乎这样,Java程序员不用再关心内存,也不用去了解相关知识.但结果真的是这样吗?特别对于我们这种Android ...
- Win10图片打开方式没有“Windows照片查看器”,如何找回?
如果你是全新安装的Win10正式版,那么就会发现当在图片上点击右键时,"打开方式"菜单里熟悉的"Windows照片查看器"不见了,换成了Win10全新的&quo ...
- 计算机中RAM和ROM
1.RAM(RamdomAccessMemory): 易挥发性随机存取存储器,高速存取,读写时间相等,且与地址无关,如计算机内存等. 2.ROM(Read Only Memory): 只读存储器.断电 ...
- Linux 系统监控常用命令
简介 列举操作系统级监控常用的几个方法,建议收藏使用 CPU top 命令可用于监控系统整体负载,包括cpu.内存使用等,能够实时显示系统中各个进程的资源占用状况 输出样例 top - 19:37:4 ...
- Java中的代码点和代码单元(转)
文章来源:http://blog.csdn.net/weizhaozhe/article/details/3909079 这篇文章讲的很细,但是对于初学者也很难理解,在后面的笔记中,我会陈述自己的简单 ...