TCP和UDP

#"传输层"的功能:
就是建立"端口到端口"的通信。相比之下,“网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,
#我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做"套接字”(socket)。有了它,就可以进行网络应用程序开发了。

#UDP数据包,也是由"标头"和"数据"两部分组成。
#"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分
#UDP数据包非常简单,"标头"部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。
#UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

#TCP协议可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,
#发出方就知道有必要重发这个数据包了。
#因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。
#TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,
#通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

#三次握手:
#第一次:客户端向服务器端发出链接请求
#第二次:服务器端向客户端给出响应可以链接
#第三次:客户端告诉服务器端链接成功

#四次挥手:
#第一次:客户端向服务器端发起断开链接请求
#第二次:服务器端响应客户端等会儿断开
#第三次:服务器端响应客户端可以断开了
#第四次:客户端告知服务器端已经断开链接

#ACK: 表示验证字段
#SYN: 位数置1, 表示建立TCP连接
#FIN:位数置1,表示断开TCP连接

#三次握手过程说明

#1. 由客户端发送建立TCP连接的请求报文, 其中报文中包含seq序列号, 是由发送端随机生成的,
#并且将报文中的SYN字段置为1, 表示需要建立TCP连接 (SYN=1, seq=x, x为随机生成数值)

#2. 由服务端回复客户端发送的TCP连接请求报文, 其中包含seq序列号, 是由回复端随机生成的, 并且将SYN置为1,
#而且会产生ACK字段, ACK字段数值是在客户端发送过来的序列号seq的基础上加1进行回复,以便客户端收到信息时,
#知晓自己的TCP建立请求已得到验证 (SYN=1, ACK=x+1, seq=y, y为随机生成数值) 这里的ACK加1可以理解为是确认和谁建立连接

#3. 客户端收到服务端发送的TCP建立验证请求后, 会使自己的序列号加1表示, 并且再次回复ACK验证请求,
#在服务端发过来的seq上加1进行回复(SYN=1, ACK=y+1, seq=x+1)

#四次挥手过程说明
#1.
#客户端发送断开TCP连接请求的报文, 其中报文中包含seq序列号, 是由发送端随机生成的,
#并且还将报文中的FIN字段置为1, 表示需要断开TCP连接(FIN=1, seq=x, x由客户端随机生成)

#2.
#服务端会回复客户端发送的TCP断开请求报文, 其包含seq序列号, 是由回复端随机生成的,
#而且会产生ACK字段, ACK字段数值是在客户端发过来的seq序列号基础上加1进行回复,
#以便客户端收到信息时, 知晓自己的TCP断开请求已经得到验证(FIN=1, ACK=x + 1, seq=y, y由服务端随机生成)

#3、服务端在回复完客户端的TCP断开请求后,不会马上进行TCP连接的断开,
#服务端会先确保断开前,所有传输到A的数据是否已经传输完毕,一旦确认传输数据完毕,
#就会将回复报文的FIN字段置1,并且产生随机seq序列号。(FIN = 1,ACK = x + 1,seq = z,z由服务端随机生成)

#4、客户端收到服务端的TCP断开请求后,会回复服务端的断开请求,包含随机生成的seq字段和ACK字段,
#ACK字段会在服务端的TCP断开请求的seq基础上加1,从而完成服务端请求的验证回复。(FIN = 1,ACK = z + 1,seq = h,h为客户端随机生成)
#至此TCP断开的4次挥手过程完毕

#11种状态解析

#LISTEN -------------------- 等待从任何远端TCP 和端口的连接请求。

#SYN_SENT --------------- 发送完一个连接请求后等待一个匹配的连接请求。

#SYN_RECEIVED -------- 发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。

#ESTABLISHED ----------- 表示一个打开的连接,接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。

#FIN_WAIT_1 -------------- 等待远端TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。

#FIN_WAIT_2 -------------- 等待远端TCP 的连接终止请求。

#CLOSE_WAIT ------------ 等待本地用户的连接终止请求。

#CLOSING ------------------ 等待远端TCP 的连接终止请求确认。

#LAST_ACK ---------------- 等待先前发送给远端TCP 的连接终止请求的确认(包括它字节的连接终止请求的确认)

#TIME_WAIT --------------- 等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。

#CLOSED ------------------- 不在连接状态(这是为方便描述假想的状态,实际不存在)

#osi网络7层: 1.应用层 2.表示层 3.会话层 4.传输层 5.网络层 6.数据链路层 7.物理层
#osi网络4层: 1.应用层 2.传输层 3.网络层 4.物理数据链路层

#HTTP协议(超文本传输协议):是一种发布和接收 HTML页面的方法
#HTTPS:简单讲是HTTP的安全版,在HTTP下加入SSL层
#SSL(安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。
#HTTP的端口号为80,
#HTTPS的端口号为443

#Python 提供了两个级别访问的网络服务:
#低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。
#高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

#Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

#FTP:文件传送协议,用于文件传输

#工作流程
#客户端连接远程主机上的FTP服务器
#客户端输入用户名和密码
#客户端和服务器进行各种文件传输和信息查询操作
#客户端从远程FTP服务器退出,结束传输

#SMTP:简单邮件传输协议,用于处理邮件

#它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值