TCP/IP协议详解

  • 1.应用层
    • (1)应用层知名协议
    • (2)HTTP 协议详解
      • ①request 请求头(4部分)
      • ②response 响应头(4部分)
      • ③HTTP常见Header信息
      • ④Session 和 Cookie的区别是啥?
      • ⑤HTTP 和 HTTPS 区别是啥?
      • ⑥HTTPS加密和解密的过程
    • (3) 重要应用层协议DNS
      • ①DNS(域名解析协议)
      • ②域名解析的过程是啥?
      • ③当在浏览器中输入url之后,会发生什么事情?
      • ④缓解IPV4地址不够用的方法
      • ⑤NAT技术
  • 2.传输层
    • (1)端口号
      • ①端口号范围划分
      • ②认识知名端口号
    • (2) 传输层知名协议(UDP、TCP)
      • ①UDP 协议(用户数据报协议)
      • ②TCP协议(传输控制协议)
      • ③UDP 和TCP对比
    • (3) TCP如何实现可靠传输
      • ①确认应答(ACK)机制
      • ②超时重传机制
      • ③连接管理机制(三次握手、四次挥手)
      • ④滑动窗口
      • ⑤流量控制
      • ⑥拥塞控制
      • ⑦延迟应答
      • ⑧捎带应答
  • 3.网络层
    • (1)IP协议
      • ①基本概念
      • ②IP协议头格式
    • (2)网段划分(重要)
      • ①基本概念及划分网段
      • ②IP地址不够用的原因和解决方案
      • ③私有IP地址和公网IP地址
    • (3)路由
  • 4.数据链路层
    • (1)以太网
      • ①以太网帧格式
      • ②认识MAC地址
    • (2)对比理解MAC地址和IP地址
    • (3)MTU(最大传输单元)
      • ①MTU对IP协议的影响
      • ②MTU对UDP协议的影响
      • ③MTU对于TCP协议的影响
    • (4)ARP协议(地址解析协议)

1.应用层

应用层的作用: 满足我们日常需求的网络程序, 都是在应用层

(1)应用层知名协议

  • HTTP协议:超文本传输协议
  • HTTPS协议:基于SSL的http协议,在HTTP应用层与TCP传输层之间加了一层安全层,信息在传输之前先进行SSL或TLS安全层加密,然后再传输。
  • FTP协议:文件传输协议;可以使主机之间共享文件,用于控制Internet上文件的双向传输。
  • DNS协议:DNS是⼀整套从域名映射到IP的系统。
  • SSH协议:为远程登录会话和其他网络服务提供安全性的协议

(2)HTTP 协议详解

  • URL: 协议http/https://服务器地址(ip、域名):端口号(默认端口号不可省略)/目录地址、页面地址 ?参数(使用=分割) #片段修饰符
  • http 默认端口号:80
  • https 默认端口号:443

①request 请求头(4部分)

1.首行:方法类型(GET/POST) URL 版本号(HTTP/1.0 1.1)
2.协议头部header:每一行是一个键值对,键和值之间用“:”来分割
3.空行:协议头header的结束标记
4.正文(body):通常情况下GET方法对应的请求没有bodyPOST方法对应的请求有body, body部分的格式可能和url中的参数是一样的。
GET 和 POST的区别:GET提交的数据在URL中;POST提交的数据在正文中

②response 响应头(4部分)

1.首行:版本号 响应状态码 状态描述信息
响应状态码
HTTP详细状态码:

2.协议头部header:每一行是一个键值对,键和值之间用“:”来分割。
3.空行:header部分结束
4.正文body:html

③HTTP常见Header信息

Content-Type: 数据类型(text/html等)
Content-Length: Body的长度
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
User-Agent: 声明用户的操作系统和浏览器版本信息;
referer: 当前页面是从哪个页面跳转过来的;
location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;

④Session 和 Cookie的区别是啥?

1.Cookie 不安全 、Session 是安全的
2.Cookie 是存储在浏览器端的; Session是存储在服务器端的;
3.Cookie 是有大小限制的(4K),Session是没有大小限制的。

⑤HTTP 和 HTTPS 区别是啥?

HTTP的特点:

  • 无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
  • 无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
  • 基于请求和响应:基本的特性,由客户端发起请求,服务端响应
  • 简单快速、灵活
  • 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性

HTTPS的特点:基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护

  • 内容加密:采用混合加密技术,中间者无法直接查看明文内容
  • 验证身份:通过证书认证客户端访问的是自己的服务器
  • 保护数据完整性:防止传输的内容被中间人冒充或者篡改

⑥HTTPS加密和解密的过程

  • 1.客户端发起HTTPS请求
    用户在浏览器里输入一个https网址,然后连接到server的443端口。
  • 2.服务端的配置
    采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。这套证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。
  • 3.传送证书
    这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
  • 4.客户端解析证书
    这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。
  • 5.传送加密信息
    这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
  • 6.服务段解密信息
    服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
  • 7.传输加密后的信息
    这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。
  • 8.客户端解密信息
    客户端用之前生成的私钥解密服务端传过来的信息,于是获取了解密后的内容。

(3) 重要应用层协议DNS

DNS是一整套从域名映射到IP的系统,默认端口号:53

①DNS(域名解析协议)

  • DNS是应用层协议
  • DNS底层使用UDP进行解析
  • 浏览器会缓存DNS结果

②域名解析的过程是啥?

(1) 输入域名后, 先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据.
(2) 如果没有,就向上级域名服务器进行查找, 依次类推
(3) 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址
(4)域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程。

③当在浏览器中输入url之后,会发生什么事情?

④缓解IPV4地址不够用的方法

  • 1.IPV6(128位)【弊端:需要更换网 络设备来支持IPV6】
  • 2.NAT(将私有IP对外通信时转为全 局IP),私有IP和全局IP进行转换。

⑤NAT技术

NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能;

  • NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术

NAT技术的缺点:

(1)NAT服务是有开销的。
(2)NAT服务器挂掉,整个系统都会挂掉。

NAT和代理服务器

  • 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙,另外像迅游这样的加速器, 也是使用代理服务器.
  • 从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换.代理服务器往往工作在应用层.
  • 从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网.
  • 从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上.

2.传输层

(1)端口号

①端口号范围划分

  • 0 - 1023: 知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的.
  • 1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的. Tomcat端口号:8080,Mysql端口号:3306

②认识知名端口号

  • ssh服务器, 使用22端口
  • ftp服务器, 使用21端口
  • telnet服务器, 使用23端口
  • http服务器, 使用80端口
  • https服务器, 使用443

(2) 传输层知名协议(UDP、TCP)

①UDP 协议(用户数据报协议)

UDP协议端格式:
UDP的特点:

  • 无连接: 知道对端的IP和端口号就直接进行传输, 不需要建立连接;
  • 不可靠: 没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方, UDP协议层也不 会给应用层返回任何错误信息;
  • 面向数据报: 不能够灵活的控制读写数据的次数和数量;

UDP缓冲区:

  • UDP没有发送缓冲区. 调用sendto会直接交给内核, 由内核将数据传给网络层协议进行后续的传输动作;
  • UDP具有接收缓冲区. 但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致; 如果缓冲区满了,再到达的UDP数据就会被丢弃;

半双工:发送端只能发送消息,不能接收消息。
UDP的socket既能读,也能写,这个概念叫做全双工
如果我们需要传输的数据超过64K, 就需要在应用层手动的分包, 多次发送, 并在接收端手动拼装;

基于UDP的应用层协议

NFS: 网络文件系统
TFTP: 简单文件传输协议
DHCP: 动态主机配置协议
BOOTP: 启动协议(用于无盘设备启动)
DNS:域名解析协议

②TCP协议(传输控制协议)

TCP协议段格式:
6位标志位:

  • URG: 紧急指针是否有效
  • ACK: 确认号是否有效
  • PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走
  • RST: 对方要求重新建立连接; 我们把携带RST标识的称为复位报文段
  • SYN: 请求建立连接; 我们把携带SYN标识的称为同步报文段
  • FIN: 通知对方, 本端要关闭了, 我们称携带FIN标识的为结束报文段

16位校验和:

发送端填充, CRC校验. 接收端校验不通过, 则认为数据有问题. 此处的检验和不光包含TCP首部, 也包含TCP数据部分

③UDP 和TCP对比

  • UDP: 无连接、不稳定、面向数据报、没有发送缓冲区,以高效性著称。
  • TCP:有连接、稳定、面向数据流、有发送、接收缓冲区,以稳定性著称。

(3) TCP如何实现可靠传输

①确认应答(ACK)机制

确认应答机制:对收到的信息给发送方发送报文确认收到数据

TCP将每个字节的数据都进行了编号. 即为序列号.
每一个ACK都带有对应的确认序列号, 意思是告诉发送者, 我已经收到了哪些数据; 下一次你从哪里开始发。

②超时重传机制

超时重传机制:等待200ms没有收到接收方的确认应答则说明数据丢失,那么就要进行重新发送。
主机A发送数据给B之后, 可能因为网络拥堵等原因, 数据无法到达主机B;
如果主机A在一个特定时间间隔内没有收到B发来的确认应答, 就会进行重发

主机A未收到B发来的确认应答, 也可能是因为ACK丢失了,利用序列号去重。

③连接管理机制(三次握手、四次挥手)

  • 在正常情况下, TCP要经过三次握手建立连接, 四次挥手断开连接

因为TCP是有连接的,所以验证(通过3次握手)TCP的4项能力:

  • 1.发送端的发送能力
  • 2.发送端的接受能力
  • 3.接收端的发送能力
  • 4.接收端的接受能力

三次握手,四次挥手图示:

④滑动窗口

滑动窗口:进行数据传送前进行协商,确定窗口大小,窗口大小的数据无需等待应答就只可以直接发送,每次进行固定大小数据的发送,发送到窗口最大值再进行确认回复,节省了每次发送数据确认回复。

  • 窗口大小指的是无需等待确认应答而可以继续发送数据的最大值. 上图的窗口大小就是4000 个字节(四个段).
  • 发送前四个段的时候,不需要等待任何ACK, 直接发送;
  • 收到第一个ACK后, 滑动窗口向后移动, 继续发送第五个段的数据; 依次类推;
  • 操作系统内核为了维护这个滑动窗口, 需要开辟发送缓冲区 来记录当前还有哪些数据没有应答; 只有确认应答过的数据, 才能从缓冲区删掉;
  • 窗口越大, 则网络的吞吐率就越高;

如果出现丢包,如何进行重传?

情况一: 数据包已经抵达,ACK被丢了。 这种情况下, 部分ACK丢了并不要紧, 因为可以通过后续的ACK进行确认;

情况二: 数据包就直接丢了.

  • 当某一段报文段丢失之后, 发送端会一直收到 1001 这样的ACK, 就像是在提醒发送端 “我想要的是 1001” 一样;
  • 如果发送端主机连续三次收到了同样一个 “1001” 这样的应答, 就会将对应的数据 1001 - 2000 重新发送;
  • 这个时候接收端收到了 1001 之后, 再次返回的ACK就是7001了(因为2001 - 7000)接收端其实之前就已经收到了, 被放到了接收端操作系统内核的接收缓冲区中;
  • 这种机制被称为 “高速重发控制”(也叫 “快重传”).

⑤流量控制

接收端处理数据的速度是有限的. 如果发送端发的太快, 导致接收端的缓冲区被装满, 这个时候如果发送端继续发送, 就会造成丢包, 继而引起丢包重传等等一系列连锁反应。
  因此TCP支持根据接收端的处理能力, 来决定发送端的发送速度. 这个机制就叫做流量控制(Flow Control)
  

  • 接收端将自己可以接收的缓冲区大小放入 TCP 首部中的 “窗口大小” 字段, 通过ACK端通知发送端;
  • 窗口大小字段越大, 说明网络的吞吐量越高;
  • 接收端一旦发现自己的缓冲区快满了, 就会将窗口大小设置成一个更小的值通知给发送端;
  • 发送端接受到这个窗口之后, 就会减慢自己的发送速度;
  • 如果接收端缓冲区满了, 就会将窗口置为0; 这时发送方不再发送数据, 但是需要定期发送一个窗口探测数据段, 使接收端把窗口大小告诉发送端.

那么问题来了, 16位数字最大表示65535, 那么TCP窗口最大就是65535字节么?
  实际上, TCP首部40字节选项中还包含了一个窗口扩大因子M, 实际窗口大小是窗口字段的值左移 M 位;

⑥拥塞控制

TCP引入慢启动机制, 先发少量的数据, 探探路, 摸清当前的网络拥堵状态, 再决定按照多大的速度传输数据;

慢启动快增长的方式来调节窗口大小,防止网络出现问题,大量数据发送到缓冲区造成数据堆积的情况。少量丢包触发拥塞控制,大量丢包则认为是网络拥塞。
少量的丢包, 我们仅仅是触发超时重传; 大量的丢包, 我们就认为网络拥塞;
  拥塞控制, 归根结底是TCP协议想尽可能快的把数据传输给对方, 但是又要避免给网络造成太大压力的折中方案.

⑦延迟应答

注意:延迟应答时间不能超过1MSL(最大生存时间),如果超过1MSL,则会导致超时重传,会以为包丢失。

窗口越大, 网络吞吐量就越大, 传输效率就越高. 我们的目标是在保证网络不拥塞的情况下尽量提高传输效率;

那么所有的包都可以延迟应答么? 肯定也不是;

  • 数量限制: 每隔N个包就应答一次;
  • 时间限制: 超过最大延迟时间就应答一次;
    具体的数量和超时时间, 依操作系统不同也有差异; 一般N取2, 超时时间取200ms;

⑧捎带应答

捎带应答:每次确认回复发送一个数据包有点浪费,可以将确认回复和数据一起捎带着发送。

  • 面向字节流:数据不会直接发送,而是放在一个缓冲区,操作系统选择一个合适的时机将数据以二进制数据串发送出去;接收方也可以选择一次性接收整条数据也可以选择一次接收一点点,多次接收。
  • 但是会引起粘包问题:数据不是直接接收,而是放在缓冲区,那么接收方读取数据的时候就可能会把两条数据当做一条数据接收。
  • 发生粘包问题主要是因为TCP在传输层,对数据的格式没有明确的划分。
  • 粘包问题解决方案
    1、给数据定长,以规定大小发送和接收;变长数据,在应用层协议声明中声明数据长度。
    2、以特殊字符作为分隔符,但是发送和接收时要进行编码和解码。

3.网络层

(1)IP协议

①基本概念

主机: 配有IP地址, 但是不进行路由控制的设备;
路由器: 即配有IP地址, 又能进行路由控制;
节点: 主机和路由器的统称;

②IP协议头格式

  • 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.
  • 4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节.
  • 8位服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个. 对于ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要.
  • 16位总长度(total length): IP数据报整体占多少个字节.
  • 16位标识(id): 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id都是相同的.
  • 3位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表示"更多分片", 如果分片了的话, 最后一个分片置为1, 其他是0. 类似于一个结束标记.
  • 13位分片偏移(framegament offset): 是分片相对于原始IP报文开始处的偏移.
  • 8位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环
  • 8位协议: 表示上层协议的类型
  • 16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏.
  • 32位源地址和32位目标地址: 表示发送端和接收端.
  • 选项字段(不定长, 最多40字节): 略

(2)网段划分(重要)

①基本概念及划分网段

IP地址分为两个部分, 网络号和主机号内网:网络号相同,主机号不同。

网络号: 保证相互连接的两个网段具有不同的标识;
主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;

过去曾经提出一种划分网络号和主机号的方案, 把所有IP 地址分为五类, 如下图所示(该图出 自[TCPIP])。

A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255

随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址;
  针对这种情况提出了新的划分方案, 称为CIDR(Classless Interdomain Routing):

  • 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;
  • 子网掩码也是一个32位的正整数. 通常用一串 “0” 来结尾; 将IP地址子网掩码进行 “按位与” 操作, 得到的结果就是网络号;
  • 网络号和主机号的划分与这个IP地址是A类、B类还是C类无关;

②IP地址不够用的原因和解决方案

CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用. 这时候有三种方式来解决:

  • 动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联 网中, 得到的IP地址不一定是相同的;
  • NAT技术(后面会重点介绍);
  • IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节 128位来表示一个IP地址; 但是目前IPv6还没有普及;

③私有IP地址和公网IP地址

私有IP地址

  • 10.*,前8位是网络号,共16,777,216个地址
  • 172.16.到172.31.,前12位是网络号,共1,048,576个地址
  • 192.168.*,前16位是网络号,共65,536个地址
    包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP);

(3)路由

在复杂的网络结构中, 找出一条通往终点的路线;
IP数据包的传输过程也和问路一样.

  • 当IP数据包, 到达路由器时, 路由器会先查看目的IP;
  • 路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;
  • 依次反复, 一直到达目标IP地址;

4.数据链路层

(1)以太网

①以太网帧格式

  • 源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的;
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
  • 帧末尾是CRC校验码。

②认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

(2)对比理解MAC地址和IP地址

  • IP地址描述的是路途总体的 起点 和 终点;
  • MAC地址描述的是路途上的每一个区间的起点和终点;

(3)MTU(最大传输单元)

MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制。

  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后 面补填充位;
  • 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;

①MTU对IP协议的影响

由于数据链路层MTU的限制, 对于较大的IP数据包要进行分包.

  • 将较大的IP包分成多个小包, 并给每个小包打上标签;
  • 每个小包IP协议头的 16位标识(id) 都是相同的;
  • 每个小包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片, 第3位来表示结束标记(当 前是否是最后一个小包, 是的话置为1,否则置为0);

②MTU对UDP协议的影响

  • 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个 IP数据报.
  • 这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP 数据报在网络层被分片,整个数据被丢失的概率就大大增加了.

③MTU对于TCP协议的影响

  • TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(Max Segment Size);
  • TCP在建立连接的过程中, 通信双方会进行MSS协商.
  • 最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU).
    MSS和MTU的关系:

(4)ARP协议(地址解析协议)

ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议。
ARP协议的作用: ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址(MAC地址),则通过ARP(地址解析协议)根据目的主机IP地址映射得到MAC地址,进行通信。

深入学习TCP/IP协议(详解)相关推荐

  1. TCP /IP协议详解【转】

    转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...

  2. TCP/IP协议详解---概述

    工作之后,才发现以前在学校里学的东西忘得太快太干净了,现在需要一点点地捡起来了,要不然写几行程序会闹很多笑话会出现很多bug的.从今天开始,翻一翻<TCP/IP协议详解 卷1>这本书,希望 ...

  3. TCP/IP协议详解、TCP三次握手

    TCP/IP协议详解:TCP/IP协议详解_王佳斌-CSDN博客_tcp/ip协议认识HTTP协议它是互联网协议(Internet Protocol Suite),一个网络通信模型,是互联网的一个基本 ...

  4. 《TCP IP协议 详解》思考总结 · 三

    前言 这一篇文章主要围绕了IP协议,ICMP协议和UDP协议展开,希望可以在这里大概做一个总结,将<TCP/IP协议详解 卷一>书中TCP相关章节前面的内容做一个结束,在下一篇文章专心的去 ...

  5. TCP/IP协议详解卷一:Chapter21 笔记

    TCP/IP协议详解卷一:Chapter21 笔记 Chapter 21 TCP的超时与重传 21.3 往返时间测量 21.5 拥塞举例 21.6 拥塞避免算法 21.7 快速重传与快速恢复算法 21 ...

  6. 04 TCP/IP协议详解

    目录 章节目标 4.1 概述 1.为什么会有TCP/IP协议 2.介绍 4.2 TCP/IP协议族 4.2.1 TCP/IP协议栈 1.协议的分层 2. 主机与主机之间通信的三要素 3.应用层 4.传 ...

  7. 【网络基础】TCP/IP协议详解

    TCP/IP协议定义 TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是在多个不同网络间实现信息传输的通信协议.是 ...

  8. TCP/IP协议详解(TCP/IP protocol)

    本文转载自菜鸟教程TCP/IP 教程 TCPIP 教程 TCPIP 介绍 计算机通信协议Computer Communication Protocol 什么是 TCPIP 在 TCPIP 内部 TCP ...

  9. WinSock API网络编程——TCP/IP协议详解

     WinSock API网络编程--TCP/IP协议(http://www.impcas.ac.cn/usr/lujun/browse.asp?id=winsock_tcp)            ...

  10. TCP/IP协议详解内容总结(怒喷一口老血)

    TCP/IP协议(本文源自外部链接) TCP/IP不是一个协议,而是一个协议族的统称.里面包括IP协议.IMCP协议.TCP协议. 这里有几个需要注意的知识点: 互联网地址:也就是IP地址,一般为网络 ...

最新文章

  1. qlabel 边加载边更新_普及一下什么是超窄边液晶拼接屏
  2. 2014/12/05 随笔 2014-12-05 12:50 26人阅读 评论(0) 收藏...
  3. linux mysql 5.6.22_linux下MySQL5.6.2安装过程
  4. N101BCG-L21-10.1-LVDS
  5. 调车遇到的问题及解决办法
  6. 火山引擎智能容器云 veCompass v3.0 重磅发布!
  7. C语言实验报告(通用)
  8. 图像的数字化(以某化探异常图为例——地球物理)
  9. CAD插件学习系列教程(一) 贱人工具箱的使用
  10. 马尔可夫不等式 Markov's inequality
  11. 【Linux】区分Ubuntu桌面版本和服务器版本
  12. eax,ebx,ecx,edx,esi,edi,ebp,esp寄存器的作用
  13. 1_01_GLib库入门与实践_GLib库简介
  14. PTA练习7-2 求最大值及其下标 (20 分)-中规中矩
  15. st-link下载连线
  16. EXCEL----数据处理(二)----B列中包含了A列的项
  17. BUUCTF Easy MD5
  18. Stack Ball 堆栈球小游戏unity3d开发教程
  19. 包装成悲伤消费的骗局正在收割午夜的年轻人
  20. Android之ListView嵌套,访空间动态展示页面

热门文章

  1. windows上pip安装及使用详解
  2. 动态规划之——矩阵连乘(全网最详细博文,看这一篇就够了!)
  3. 读取WIND数据(行情、基金净值等)的SAS程序
  4. 如何彻底卸载VMware
  5. jq ui-selectable中click单击事件,dblclick双击事件无效
  6. php输出cad文件,AutoCAD 二次开发 输出为WMF 或BMP文件
  7. C++ Primer 5th 源代码使用说明
  8. 基于java的百货中心供应链管理系统
  9. python的画图工具有哪些_python实现画图工具
  10. iis无法启动万维网发布服务W3SVC