1.概述

路由器是在网络层进行联通,而网桥是在链路层联通不同的网络。

IP层用ICMP来与其他主机或路由器交换错误报文和其他的重要信息。应用程序也可以访问ICMP,两个诊断工具:Ping和Traceroute

IGMP是组管理协议,用来把一个UDP数据报多播到多个主机;ICMP和IGMP的消息都是通过IP数据报来封装的

IP的地址分类:5类:

A (0 网络号7bit 主机号24bit);0.0.0.0 - 127.255.255.255

B(10 网络号14bit 主机号16bit);128.0.0.0 - 191.255.255.255

D(1110 多播组号28位);

还可以分为3类IP地址:单播、广播和组播地址

以太网数据帧长度 46-1500字节

SLIP:串行线路IP 报文的封装格式是以c0开头和结尾的;而PPP协议是以7E来标志的

环回接口:127.0.0.1 localhost;会将IP地址是环回地址或本地址的数据放入IP输入队列中,另外广播/多播地址的数据也会复制一份给环回接口

以太网的MTU是1500字节,不同网络的帧的MTU不同,IP层会依据MTU给数据进行分片。如果数据要经过不同的网络,那么路劲中最小的MTU

TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数目,通常为32或64

IP是可以从TCP UDP ICMP IGMP接收数据报的

ip地址中如果没有指定主机号,则指定网络上的所有主机

路由表搜索的时候先匹配目的ip,不行则匹配目的网络号表目,还是不行则匹配默认表目,最后选择主机不可达不能传送。

为每个网络指定1个路由器,缩小规模

主机号可能会分一部分用来划分子网。例如B类地址16bit的主机号,用8bit来分子网,可以有254个子网,每个子网254个主机。子网对外部透明,但是对于内部的路由器是不透明的

给定IP地址和子网掩码,就知道了是不是在同一个网络,同一个子网了。AB类地址一般都会子网划分

ifconfig和netstat命令查找网络接口相关的信息,netstat还可以查看路由表信息

IP主要有地址不够用,路由表规模以后可能会比较大这些问题

ICMP可以有查询报文,还可以有差错报文,不可达时候发送,报文必须包括生成该差错报文的数据报IP首部,还必须包括后面的前8个字节,这里面包含了TCP或UDP中的源和目的端口号

ping发送一份ICMP回显请求报文给主机,等待返回ICMP回显应答。是对两个TCP/IP系统连通性进行测试的基本工具,集成在了内核里。不经过传输层

traceroute程序能记录路由的路径,通过发送TTL为1的UDP数据报,然后每次将TTL加1,,路由器会丢弃数据包返回ICMP超时报文,最终主机会产生一个ICMP端口不可达的报文

动态选路:内部网关协议IGP(选路信息协议 RIP,最短路径优先 OSPF),外部网关协议 EGP(边界网关协议 BFP)

UDP具有伪首部,是12字节,自己的首部是8字节,UDP和TCP都加入伪首部,是为了计算校验。UDP的校验是对整个数据的校验,端到端。

IP层的分片,每个接口可能会是不同的网络,MTU可能不同。数据报可能在中途进行分片,每个片具有相同的标识flag,还有一个标识字段用来表示是否还有更多的片。如果某个分片丢失,是需要重传整个数据报的。传输层的头部信息只出现在第一个分片中。如果IP数据报需要被分片而标识中设置为不分片DF,那么会发送ICMP不可达差错报文。

UDP与ARP的交互:当数据报被分片后,如果需要arp寻址,则有几个分片就会发送几个arp请求,当接收第一个arp请求后,只有最后一个报文会被发送到特定的主机。

广播和多播只应用于UDP,前提是不面向连接。大多数的网卡都能接受目的地址为多播地址或某些子网多播地址的帧。

广播增加了对于广播数据不感兴趣主机的处理负荷。因为这些数据还是会上传到UDP层才被丢弃。多播减少了部分负荷,主机可加入一个或多个多播组。

广播地址也分为全网和子网广播地址,主机号必须全为1.

多播组的地址其实是D类地址,多播组id有28位。不限制组内主机的个数。多播地址的以太网地址首字节必须是01,ip地址的低位23bit映射到以太网地址

组管理协议IGMP就是让物理网络上的所有系统知道主机当前所在的多播组

tcp首部20字节中前4字节分别是两个端口号;然后是4字节的序号和4字节的确认序号,之后4字节中包含6个特殊位和2字节的窗口大小(最大为65535字节);

URG紧急指针,ACK,PSH接收方应该尽快将报文段发送给应用层,RST重新连接,SYN同步发起连接,FIN

MSS最大段长度,一般是1024,有些可以协商

四次挥手是因为tcp是全双工的,每个方向需要单独来关闭

time wait有2MSL等待时间,报文段最大生存时间,是为了能接收可能的再次FIN,

半打开连接是因为一方可能突然掉电关机,然后重启后,启动新的连接,之前的半连接就一直在。TCP处理原则是接收方以复位做为应答

对于同时建立连接,双方只建立一条连接,同时关闭也是差不多的,没有太多区别,都是允许的

呼入连接请求队列:该队列中的连接已经握手完成但是还没有被应用层所接受,队列的最大长度称为积压值

使用nagle算法减少小报文的数目

四种定时器:重传定时器、坚持、保活和2MSL定时器

拥塞窗口cwnd和慢启动门限ssthresh,发送方能发送的大小为cwnd和接收方通告的窗口的最小值

慢启动(其实开始是指数增长cwnd,当到了门限后加1增长)和拥塞避免(快恢复)算法

TCP/IP详解(整理)的更多相关文章

  1. 《TCP/IP详解 卷1:协议》系列分享专栏

    <TCP/IP详解卷1:协议>是一本详细的TCP/IP协议指南,计算机网络历久不衰的经典著作之一. 作者理论联系实际,使读者可以轻松掌握TCP/IP的知识.阅读对象为计算机专业学生.教师以 ...

  2. 《TCP/IP详解 卷1:协议》第3章 IP:网际协议

    3.1 引言 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输(见图1-4).许多刚开始接触TCP/IP的人对IP提供不可靠.无连接的数据报 ...

  3. 《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议

    4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络如 ...

  4. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

  5. TCP/IP详解 (转)

    TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...

  6. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  7. 《TCP/IP详解卷1:协议》第1章 概述-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  8. TCP/IP详解--发送ACK和RST的场景

    在有以下几种情景,TCP会把ack包发出去: 1.收到1个包,启动200ms定时器,等到200ms的定时器到点了(第二个包没来),于是对这个包的确认ack被发送.这叫做“延迟发送”: 2.收到1个包, ...

  9. TCP/IP详解--连接状态变迁图CLOSE_WAIT

    终止一个连接要经过4次握手.这由TCP的半关闭(half-close)造成的.既然一个TCP连接是全双工(即数据在两个方向上能同时传递,可理解为两个方向相反的独立通道),因此每个方向必须单独地进行关闭 ...

  10. TCP IP详解(转)

    大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 网络七层协议简称OSI.TCP/IP刨除了物理层,并把上三层(会话层.表示层和应用层)统称 ...

随机推荐

  1. 【刷题】UOJ #274 【清华集训2016】温暖会指引我们前行

    寒冬又一次肆虐了北国大地 无情的北风穿透了人们御寒的衣物 可怜虫们在冬夜中发出无助的哀嚎 "冻死宝宝了!" 这时 远处的天边出现了一位火焰之神 "我将赐予你们温暖和希望! ...

  2. 【BZOJ4872】【Shoi2017】分手是祝愿

    Time Limit: 20 Sec Memory Limit: 512 MB Description ​ Zeit und Raum trennen dich und mich. ​ 时空将你我分开 ...

  3. BZOJ4036 [HAOI2015]按位或 【minmax容斥 + 期望 + FWT】

    题目链接 BZOJ4036 题解 好套路的题啊,,, 我们要求的,实际上是一个集合\(n\)个\(1\)中最晚出现的\(1\)的期望时间 显然\(minmax\)容斥 \[E(max\{S\}) = ...

  4. 解题:CF949D Curfew

    题面 整体的思路就是在均摊每个宿舍的人数,注意一个人可以跑好几次=.= 可以发现多的学生往中间跑一定能跑过宿管,所以只考虑学生们能不能及时跑到人不够的宿舍.对两边记录两个已经满足要求的宿舍,然后用前/ ...

  5. bzoj 3928: [Cerc2014] Outer space invaders

    $f[i][j]$表示消灭起始时间在$(i,j)$内的外星人所花费的最小代价. 考虑在这个区间内距离最远的外星人h,在他的区间中一定要选一个点要开一炮,而且这一炮可以顺便把其他跨过这个点的敌人消灭,剩 ...

  6. 《剑指offer》— JavaScript(23)二叉搜索树的后序遍历序列

    二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 相关知识 二叉查找树(B ...

  7. D. Monitor Educational Codeforces Round 28

    http://codeforces.com/contest/846/problem/D 二分答案 适合于: 判断在t时候第一次成立 哪个状态是最小代价 #include <cstdio> ...

  8. CH3101 阶乘分解

    题目链接 分解\(n!\)的质因数,输出相应的\(p_i\)和\(c_i\). 其中\(1\leq n\leq 10^6\).   考虑每一个质因子 \(p\) 在 \(n!\) 中出现的次数.显然, ...

  9. 关于maven工程打jar的问题

    今天对maven做一些整理,更好的理了下思路: 这个篇博客介绍的还是很详细的: http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.htm ...

  10. C++下实现同接口下多个类作为参数的调用和传参

    /* 实现同接口下不同类的对象的转移 定义类的接口 定义多个继承该接口的类 定义管理类,把接口当作类型, 传入该接口下各种类的对象,进行操作 */ #include<iostream> # ...