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. 十分钟教会你如何使用VitePress搭建及部署个人博客站点

    使用VitePress可以让我们快速搭建一个静态博客网站,这篇文章将带领大家搭建一个基于VitePress的静态博客网站并且部署到GitHub Pages(github提供的静态网页服务) 快速上手 ...

  2. GreatSQL特性介绍及前景展望 | 数据技术嘉年华2021分享PPT发布

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 全 ...

  3. beego下让swagger按照更新了controllers的接口信息自动更新commentsRouter_controllers.go

    beego下让swagger按照更新了controllers的接口信息自动更新commentsRouter_controllers.go (1)在beego环境中,当更新了controllers目录下 ...

  4. php YII2空数组插入报错问题处理 Array to string conversion

    问题描述 前端传空数组 [],php接收后处理不当插入数据库时报错Array to string conversion 参数示例 { "id": 0, //ID整型 "t ...

  5. Git 05 文件操作

    参考源 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0 版本 本文章基于 Git 2.35.1.2 文件的四种状 ...

  6. java-Servlet生命周期与jsp

    容器如何处理请求资源路径? 比如,在浏览器地址栏输入:ip地址路径/abc.html. Step1.默认访问的是一个servlet,会从web.xml中查找有没有匹配的servlet.         ...

  7. java学习第二天多态.day09

    接口 接口总结 接口表示一种规约(规范.标准),它里面定义了一些列抽象方法(功能),它可以被多个类实现. 1接口名称首写字母用I,表示一个接口,后命名使用驼峰命名 2.接口中定义的都是抽象方法,所以可 ...

  8. Java开发学习(二十六)----SpringMVC返回响应结果

    SpringMVC接收到请求和数据后,进行了一些处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户. 比如:根据用户ID查 ...

  9. 入门 Socket.io

    概念 Socket.io 是一个支持客户端和服务器之间的低延迟.双向和基于事件的通信的库,除了支持 JavaScript 以外,还支持 Java.Python.Golang. Socket.io 构建 ...

  10. java过滤器的写法

    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 原文地址:http://t.csdn.cn/ZD88A ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 过滤器实际上就是 ...