您的位置:首页 > 理论基础 > 计算机网络

TCP/IP简单了解

2017-08-14 00:00 253 查看
早在大学中我们就学过计算机网络,首先要知道

OSI(Open System Interconnection)网络参考模型



应用层:显示到界面上给用户看

表示层:解析数据(图片就解析成图片 音频就解析成音频)

会话层:建立连接(如打电话)

传输层:定义传输协议TCP/UDP

网络层:负责ip寻址(路由)

数据链路层:mac地址解封装

物理层:制定硬件设备(网线光纤啦这些)

这套模型是国际标准组织为了统一网络通信架构而提出的。但是再它出来之前,各大开发商不能干等着吧,于是各大开发商自己瞎捣鼓搞出来一套如今普遍再用的TCP/IP网络参考模型,当OSI参考模型出来的时候,TCP/IP模型,早已一统江湖,人们早已习惯了TCP/IP模型。

TCP/IP模型:(右边红框)



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协议的。

各层次都有些神马:



网络通讯要素

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开始传送数据。



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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: