TCP/IP 4层结构:应用层 传输层 网络层 链路层

 
探索过程问题:一个主机的数据要经过哪些过程才到达对方的主机上
一组电信号就是一个数据包,一个数据包称为一帧,制定这个规则的就是以太网协议
 
0 物理介质:
光纤,双绞线,无线电波;都转换成0和1的电信号;不同的物理介质传输带宽 速率 传输距离以及抗干扰性不同;物理介质是网络通讯的基石;
http发送一个请求时,应用层,传输层,网络层和链路层的相关协议依次对 该请求 进行 包装 并 携带对应的首部,最终在 链路层 生成以太网数据包;
对方接收到数据包,就对该数据包一层一层采用对应的协议进行拆包,最后把 应用层数据 交给 应用程序 处理;
路由器把 数据包 通过物理介质转发到各个网关,网关根据数据里面携带的MAC地址,确认是否需要转发到其他网关,当 数据包 到达目标网关之后,网关在根据IP地址找到对应的主机
 
1 链路层:
完整的以太网数据包 :
首部:14字节;包含目标MAC地址 源MAC地址和类型。
数据:46 - 1500字节;如果传输数据超过1500字节 就分割层多个帧进行发送。
尾部:4字节;数据帧校验序列,确认数据包传输过程中是否损坏。
 
接入网络的设备必须安装网络设备器(网卡);
网卡地址就是数据包的发送地址和接收地址 -- 帧首部包含的MAC地址,MAC地址具有全球唯一性,十六进制,6个字节;
以太网采用 广播 形式 把数据包发给我所有子网内的所有主机,主机读取首部里面的MAC地址 跟自己的MAC地址比对,如果不同就丢弃
总结:链路层的主要工作是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方
 
2 网络层:
问题:发送者如何知道接受者的MAC地址?
发送者如何知道接受者和自己属于同个子网?
如果接受者的自己不在同一个子网,数据包如何发给对方?
网络层定义了三个协议:IP协议、ARP协议、路由协议
【1】IP协议
MAC地址与厂商有关,与网络无关;IP地址能够区分两台主机是否在同个网络;
版本:
IPV4、IPV6
32位 4个十进制数字,前半部分表示网络地址,后半部分表示该主机在局域网中的地址。所以能根据网络地址判断是否处于同个子网内。
IP地址和子网掩码通过按位与运算等到网络地址
【2】ARP协议(地址解析协议)
是根据IP地址获取MAC地址的一个网络层协议
ARP的MAC寻址是在同一个子网中
过程:
1ARP发送一个请求数据包 首部包含了目标主机的IP地址
2在链路层进行再次封装,生成以太网数据包,然后由以太网广播给子网内的所有主机
3所有主机收到这个数据包,取出IP地址,然后和自己的IP地址比较。
相同就返回自己的MAC地址
不同就丢弃数据包
4ARP接受返回信息,确定目标机的MAC地址
5同时将返回的MAC地址与对应的IP地址存入本机ARP缓存,下次请求时候直接查询ARP节约资源
【3】路由协议
通过IP协议判断两台主机是否按在同个子网内;
如果在,就通过ARP查询对应的MAC地址,然后以广播的形式向该子网内的所有主机发送数据包;
如果不在,就将该数据包转发给本子网的网关进行路由。
网关:互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将数据包转发到目标IP所在的自王中,然后通过ARP获取目标MAC地址,最终也是通过广播形式将数据包发给接收方
完成这个过程的物理设备就是路由器,扮演交通枢纽的角色,会根据信道情况,选择并设定路由器,以最佳路径转发数据包
【4】IP数据包
在网路层,被包装的数据包叫做IP数据包,IPV4数据包的结构如下图所示:
首部:20字节,目标IP地址和源IP地址 目标IP地址是网关路由的线索和依据;
数据:最大65515字节
 
所以:网路层的主要工作 定义网络地址,区分网段,自网内MAC寻址,对不同子网的数据包进行路由
 
3 传输层:
链路层定义了主机的MAC地址;
网络层定义了IP地址,明确了主机所在的网段;
问题:数据包从主机的某个应用程序发出,由对方主机接收,而每台电脑都可能运行很多应用程序,所以当数据包背发送到主机上之后,是无法确定哪个应用程序要接收这个包的。
解决:传输层映入UDP协议,定义了端口号,同个主机上的每个应用程序都需要制定唯一的端口号,并且规定网络传输的数据包必须加上端口信息。
UDP定义的数据包叫UDP数据包
首部:8个字节 包含端口,目标端口;
数据:65527字节
缺点:没有确认机制,无法知道对方是否收到,可靠性较差;
解决:TCP协议诞生
 
TCP协议(TCP传输控制协议)
面向连接的、可靠的、基于字节流的通信协议。
简单的说:TCP协议就是有确认机制的UDP协议。每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方必须重发这个数据包
为了保证传输的可靠性,TCP协议在UDP基础上建立了三次对话的确认机制,也就是说,在正式手法数据之前,必须和对方建立可靠的连接。三次握手
相比UDP,TCP实现过程复杂,消耗连接资源较多,传输速度慢
总结:传输层的主要工作是定义端口,表示应用程序身份,实现端口到端口的通信,TCP协议可以保证数据传输的可靠性
 
4 应用层:
常见:HTTP FTP SFTP
总结:应用层主要工作是定义数据格式并按照对应的格式解读数据
 
5 全流程:
链路层:对0和1进行分组,定义数据帧,确定主机物理地址,传输数据
网络层:定义IP地址,确认主机所在的网络位置,通过IP获取MAC地址,对外网数据包进行路由转发
传输层:定义端口,确认主机应用程序身份,并把数据包交给应用程序
应用层:接收数据格式,并通过一定的格式解析数据
 

深入浅出TCP与IP协议笔记的更多相关文章

  1. 深入浅出TCP与UDP协议

    深入浅出TCP与UDP协议 网络协议是每个前端工程师的必修课,TCP/IP协议族是一系列网络协议的总和,而其中两个具有代表性的传输层协议,分别是TCP与UDP,本文将介绍这两者以及他们之间的区别. 一 ...

  2. HTTP、TCP、IP协议常见面试题

    前言:在看面试题之前,先了解一下基本定义. HTTP.TCP.IP协议基本定义 HTTP: (HyperText Transport Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数 ...

  3. HTTP要点概述:一,TCP/IP协议族

    一,协议: 计算机与网络设备之间如果要相互通信,双方必须基于相同的方法.比如说,怎么探测到通讯目标,哪一方发起通信,使用哪一种语言通信,怎么结束通信,都需要事先规定.不同硬件,操作系统之间的通信需要一 ...

  4. HTTP、TCP、IP协议面试题

    HTTP.TCP.IP协议基本定义 HTTP: (HyperText Transport Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2 ...

  5. tcp ip协议笔记(1)——简单介绍

    前言 本人记性不佳,看书健忘,以此笔记来记录看书后自己所知所想,已达到加深对tcp ip的理解.本笔记不过我看完书后自己所写的总结,权当是书后复习. 一.为什么会有tcp ip协议        ...

  6. OSI协议和TCP/IP协议笔记

    1.OSI协议: 第7层应用层:OSI中的最高层.是用户与网络的接口.该层通过应用程序来完成网络用户的应用需求,如文件传输.收发电子邮件等.在此常见的协议有:HTTP,HTTPS,FTP,TELNET ...

  7. tcp与ip协议的区别

    TCP/IP(TransmissionControlProtocol/InternetProtocol的简写,中文译名为传输控制协议/互联网络协议). 简单地说,就是由底层的IP协议和TCP协议组成的 ...

  8. 三、tcp、ip协议详细

    1. 什么是 TCP/IP? TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议 1) 网络接口层: 主要是指物理层次的一些接口,比如电缆等 ...

  9. socket http tcp udp ip 协议

    Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接. socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作 ...

随机推荐

  1. SVN:取消对代码的修改

    取消对代码的修改分为两种情况: 第一种情况:改动没有被提交(commit). 这种情况下,使用svnrevert就能取消之前的修改. svn revert用法如下: #svn revert[-R] s ...

  2. java学习第一天.day06

    方法 方法的优点 1. 使程序变得更简短而清晰. 2. 有利于程序维护. 3. 可以提高程序开发的效率. 4. 提高了代码的重用性. static的作用 static在方法中如果没有添加就只能用对象调 ...

  3. mybatisplus入门

    一.maven项目文件 点击查看代码 <dependency> <groupId>org.springframework.boot</groupId> <ar ...

  4. 贪吃蛇(C语言版)链表实现

    贪吃蛇 gitee:贪吃蛇C语言版: Snake 蛇的结构 typedef struct Snake { int x; int y; struct Snake *next; }; 游戏开始欢迎界面 / ...

  5. PHP一句话简单免杀

    PHP一句话简单免杀 原型 几种已经开源的免杀思路 拆解合并 <?php $ch = explode(".","hello.ev.world.a.l"); ...

  6. centos7设置时间和上海时区并进行同步

    1.设置时区(同步时间前先设置) timedatectl set-timezone Asia/Shanghai 2.安装组件 yum -y install ntp systemctl enable n ...

  7. python的环境,你再也不用愁-conda

    Conda Guide Conda简介 conda是一个包,依赖和环境管理工具,适用于多种语言,如: Python, R, Scala, Java, Javascript, C/ C++, FORTR ...

  8. 在安装Windows时手动创建分区

    目前硬件都已经支持UEFI模式启动了,而且硬盘容量普遍大于MBR磁盘能支持的最大2TB的容量.所以在安装Windows系统的时候优先选用UEFI启用,并将磁盘配置为GPT模式以支持更大的容量.而且Wi ...

  9. 5、Math类

    Math类 Math类包含用于执行基本数学运算的方法,如初等数学,对数,平方根和三角函数 常用方法 //Math 常用方法(静态方法) //1.abs 绝对值 int abs = Math.abs(- ...

  10. Nginx反代服务器进阶学习最佳配置实践指南

    转载自:https://www.bilibili.com/read/cv16150010?spm_id_from=333.999.0.0 0x00 编译实践 描述:在企业线上生产环境中推荐进行Ngin ...