TCP/IP简单了解
2017-08-14 00:00
253 查看
早在大学中我们就学过计算机网络,首先要知道
![](https://static.oschina.net/uploads/space/2017/0814/110825_8TNF_2472425.png)
应用层:显示到界面上给用户看
表示层:解析数据(图片就解析成图片 音频就解析成音频)
会话层:建立连接(如打电话)
传输层:定义传输协议TCP/UDP
网络层:负责ip寻址(路由)
数据链路层:mac地址解封装
物理层:制定硬件设备(网线光纤啦这些)
这套模型是国际标准组织为了统一网络通信架构而提出的。但是再它出来之前,各大开发商不能干等着吧,于是各大开发商自己瞎捣鼓搞出来一套如今普遍再用的TCP/IP网络参考模型,当OSI参考模型出来的时候,TCP/IP模型,早已一统江湖,人们早已习惯了TCP/IP模型。
![](https://static.oschina.net/uploads/space/2017/0814/111310_ly2z_2472425.png)
TCP/IP(Transmission Control Protocol/Internet Protocol)传输控制协议/网间协议。是一个网络通信模型,以及一整个网络传输协议家族,TCP/IP协议是协议族,并不是只有TCP + IP
TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。
1、主机到网络层
TCP/IP 没有真正描述这一层的实现,只要能给 网络互联层一个访问接口,以便让其上传递IP分组就行。
2、网际层(网络互联层)
把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。
网络互联层定义了分组格式和协议,即IP协议(Internet Protocol)。
3、传输层
定义了两种不同的协议。
传输控制协议TCP 和 用户数据报协议UDP
TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。
UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。
4、应用层
应用层面向不同的网络应用引入了不同的应用层协议。
有基于TCP协议的,如文件传输协议FTP、 超文本链接协议HTTP。
也有基于UDP协议的。
各层次都有些神马:
![](https://static.oschina.net/uploads/space/2017/0814/111806_Sojs_2472425.png)
本地环回地址127.0.0.1 或者localhost
端口号 (定位程序)
用于标示进程的逻辑地址,不同进程的标示(如,我电脑上有qq 也有 微信 我用qq聊天时,服务器怎么知道是qq发的消息而不是微信呢,就是端口号在起作用)
有效端口:0~65535 其中0~1024由系统使用或者保留端口,开发中不要用
传输协议(用什么样的方式进行交互)
通讯的规则
常见协议:TCP、UDP
在连接中进行大数据传输(数据大小不受限制)
通过三次握手完成连接,是可靠协议,安全送达
必须建立连接,效率会稍低
每个数据报的大小限制在64k之内
因为无需连接,因此是不可靠协议
不需要建立连接,速度快
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)
RST(reset重置)
URG(urgent紧急)
Sequence number(顺序号码)
Acknowledge number(确认号码)
第一次握手:主机A发送位码为SYN=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),SYN=1,ACK=1,随机产生seq number =7654321的包
第三次握手:主机A收到后检查ack number是否正确(即第一次发送的seq number+1) 和 位码ACK是否为1。 若正确,主机A会再发送ack number=(主机B的seq+1),ACK=1,主机B收到后确认ack number值与ACK=1则连接建立成功。
完成三次握手,主机A与主机B开始传送数据。
![](https://static.oschina.net/uploads/space/2017/0814/135737_WlDq_2472425.png)
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)
OSI(Open System Interconnection)网络参考模型
![](https://static.oschina.net/uploads/space/2017/0814/110825_8TNF_2472425.png)
应用层:显示到界面上给用户看
表示层:解析数据(图片就解析成图片 音频就解析成音频)
会话层:建立连接(如打电话)
传输层:定义传输协议TCP/UDP
网络层:负责ip寻址(路由)
数据链路层:mac地址解封装
物理层:制定硬件设备(网线光纤啦这些)
这套模型是国际标准组织为了统一网络通信架构而提出的。但是再它出来之前,各大开发商不能干等着吧,于是各大开发商自己瞎捣鼓搞出来一套如今普遍再用的TCP/IP网络参考模型,当OSI参考模型出来的时候,TCP/IP模型,早已一统江湖,人们早已习惯了TCP/IP模型。
TCP/IP模型:(右边红框)
![](https://static.oschina.net/uploads/space/2017/0814/111310_ly2z_2472425.png)
TCP/IP(Transmission Control Protocol/Internet Protocol)传输控制协议/网间协议。是一个网络通信模型,以及一整个网络传输协议家族,TCP/IP协议是协议族,并不是只有TCP + IP
TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。
1、主机到网络层
TCP/IP 没有真正描述这一层的实现,只要能给 网络互联层一个访问接口,以便让其上传递IP分组就行。
2、网际层(网络互联层)
把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。
网络互联层定义了分组格式和协议,即IP协议(Internet Protocol)。
3、传输层
定义了两种不同的协议。
传输控制协议TCP 和 用户数据报协议UDP
TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。
UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。
4、应用层
应用层面向不同的网络应用引入了不同的应用层协议。
有基于TCP协议的,如文件传输协议FTP、 超文本链接协议HTTP。
也有基于UDP协议的。
各层次都有些神马:
![](https://static.oschina.net/uploads/space/2017/0814/111806_Sojs_2472425.png)
网络通讯要素
IP地址(唯一标示网络设备的)本地环回地址127.0.0.1 或者localhost
端口号 (定位程序)
用于标示进程的逻辑地址,不同进程的标示(如,我电脑上有qq 也有 微信 我用qq聊天时,服务器怎么知道是qq发的消息而不是微信呢,就是端口号在起作用)
有效端口:0~65535 其中0~1024由系统使用或者保留端口,开发中不要用
传输协议(用什么样的方式进行交互)
通讯的规则
常见协议:TCP、UDP
TCP(传输控制协议)(像打电话)
建立连接。形成传输数据的通道在连接中进行大数据传输(数据大小不受限制)
通过三次握手完成连接,是可靠协议,安全送达
必须建立连接,效率会稍低
UDP(用户数据报协议)(像发短信)
将数据及源和目的封装成数据包中,不要建立连接每个数据报的大小限制在64k之内
因为无需连接,因此是不可靠协议
不需要建立连接,速度快
TCP三次握手
位码:TCP标志位,有6种:SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)
RST(reset重置)
URG(urgent紧急)
Sequence number(顺序号码)
Acknowledge number(确认号码)
第一次握手:主机A发送位码为SYN=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),SYN=1,ACK=1,随机产生seq number =7654321的包
第三次握手:主机A收到后检查ack number是否正确(即第一次发送的seq number+1) 和 位码ACK是否为1。 若正确,主机A会再发送ack number=(主机B的seq+1),ACK=1,主机B收到后确认ack number值与ACK=1则连接建立成功。
完成三次握手,主机A与主机B开始传送数据。
![](https://static.oschina.net/uploads/space/2017/0814/135737_WlDq_2472425.png)
TCP四次挥手
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)
相关文章推荐
- TCP/IP简单了解
- TCP/IP 简单了解
- 如何使用TCP/IP与服务器进行通信-一个简单的聊天程序
- TCP/IP 协议简单分析(建立连接握手过程)
- TCP/IP简单介绍
- Android面试题----Android开发也需要了解的TCP\IP和Http知识
- 简单认识TCP/IP传输协议
- C++基于TCP/IP简单的客户端、服务器通信程序实例
- C++基于TCP/IP简单的客户端、服务器通信程序实例
- C++基于TCP/IP简单的客户端、服务器通信程序实例
- [C++] Windows下的socket编程(这是一个简单的TCP/IP例子)
- 简单理解TCP/IP、Http、Socket、webSocket的区别
- Linux基于TCP/IP简单的客户端、服务器通信程序实例
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 了解 TCP/IP 寻址和子网配置基础知识
- Linux基于TCP/IP简单的客户端、服务器通信程序实例
- C++基于TCP/IP简单的客户端、服务器通信程序实例
- windows基于TCP/IP的简单文件/图片传输
- Tcp/ip实验准备:一个简单的定时器——boost实现
- 图解HTTP(一)—— 了解Web及网络基础TCP/IP