网络编程 TCP理解

友情提示:本人即将毕业面试,看学习资料做的笔记,方便自己记忆,有不懂的小伙伴可以一起交流,大神就可以不用了,哈哈。

TCP

TCP:面向连接、可靠的传输协议

在这里插入图片描述
谈到tcp就必须知道面向连接和可靠传输协议,什么是面向连接?就要说到3次握手下面这张图就是tcp的3次握手图:
在这里插入图片描述

**当客户端想要连接服务端时,会由客户端的传输控制层发送一个(sync)包,然后服务端收到后会返回一个(sync+ack(表示知道))包,最后客户端会在发送一个(ack)确定包,只有双方都确定自己的输入输出都是通的后,两端才有资源的开辟(也就是代表为对方服务),开辟后才是真正建立连接。这也就是为什么握手需要3次。

什么是面向连接呢?
如果有一方把服务资源丢掉了那这个连接也就断了,只有双方的资源都开辟着,这个连接才是存在的,面向连接不是物理的,是开辟的资源的对称。资源的开辟代表为对方服务,完成自己后续的输出和如果对象有数据发来我有资源接你后续的一个包**

什么叫做可靠的传输?
比如客户端发送的数据包到底到没到服务端必须要等服务端发一个(ack)确认过来,这个确认机制是他可靠传输的支撑。
总结:3次握手带来了面向连接,确认机制保证了可靠传输

补充:udp就没有确认的机制,直接发

socket

传输控制层里还有一个重要的东西就是socket,什么是socket呢?
(在计算机中socket是可读可写的,channel是jdk抽象出来的,客户端跟服务端建立连接后就会得到一个socket)

中文解释:套接字
怎么记忆呢:这个成对出现的(ip+port),socket其实会在操作系统中映射到fd中的一个文件描述符就是一个数字,这个数字会交给一个进程绑定起来,进程就可以对这个数字读写。
在这里插入图片描述
在这里插入图片描述
一个电脑在浏览器同时打开几个百度的页面为什么通信数据不会乱,因为socket是成对的每一个里面有一个判断的维度。
在这里插入图片描述

4次分手

传输数据后就要4次分手,具体图见如下图所示:
客户端先发送一个fin的数据包表示想断开,服务端回送一个基于fin的ack包表示已经知道了,然后查看是否与客户端还有事情可做,如果没有,就发送一个fin包表示断开连接,然后客户端在发送一个确认包。

在这里插入图片描述

这张图就是一个从3次分手到传输数据再到4次分手的展示
在这里插入图片描述

总结:七层是层层调用的,传输控制层后面的网络层就需要计算机网络的知识结合理解。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值