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认为最 ...
随机推荐
- CRC检验
CRC(循环冗余检验码) 基本原理:在K位信息码后面加上R位校验形成N位编码(即CRC码),事先需要约定一个生成多项式G(x),校验码生成过程:将K位信息码向左移动R位然后mol(其实就是按位异或)上 ...
- 面试必问的 volatile,你了解多少?
前言 Java中volatile这个热门的关键字,在面试中经常会被提及,在各种技术交流群中也经常被讨论,但似乎讨论不出一个完美的结果,带着种种疑惑,准备从JVM.C++.汇编的角度重新梳理一遍. vo ...
- Spring 4.x (二)
1 静态代理 PersonDAO.java package com.xuweiwei.staticproxy; public interface PersonDAO { public void sav ...
- java 如何将 word,excel,ppt如何转pdf --openoffice (1)
承上启下,可折叠 上一篇说的是:服务器是windows server时,用jacob将msoffice(指的是word,excel,ppt)转换成pdf. 若被部署项目的服务器是centOS等linu ...
- [PHP]接口请求校验的原理
具体的校验步骤可以自定义,下面是比较直观的一种形式: 1. 客户端:请求参数带上时间,进行首字母排序,连接私钥后,取得加密结果: 客户端请求时带上这个加密结果作为sign参数. 2. 服务端:对sig ...
- slick对超过22个属性的表进行映射的两种办法
版权声明:本文为博主原创文章,未经博主允许不得转载 slick是scala的一个FRM(Functional Relational Mapper)框架,即函数式的关系数据库编程工具库.使用slick不 ...
- 一道python面试题引发的血案
这里说的是一道阿里校招的面试题:一行代码实现对列表a中的偶数位置的元素进行加3后求和? 今天去面试同样遇到了这个题目,这道题考察的是对python高阶函数map/filter的灵活运用(具体的使用方法 ...
- redis2 安装步骤备忘
编译 make MALLOC=jemalloc 开启后台进程 /opt/redis2/src/redis-server /opt/redis2/redis.conf 配置,后台驻守模式一定要开 vi ...
- java导入项目有红色叹号
原因:缺少jar包 解决: 选中项目 -> 右键 -> Build Path -> Configer Builder Path -> 删除掉有错的J ...
- netstream播放rtmp直播流卡顿
标准的flash播放器ActionScript3语句,播放flash publish的rtmp流,NetConnection--->NetStream--->play--->atta ...