tcp/ip协议与socket介绍

1、tcp/ip五层协议模型

应用层、传输控制层、网络层、数据链路层、物理

2. 应用层

直接向用户提供服务,完成用户希望在网络上完成的各种工作。如curl命令。

3. 传输控制层

在这里插入图片描述

3.1 TCP和UDP协议
  • TCP协议:面向连接的可靠传输协议。利用TCP进行通信时,首先要通过三步握手,以建立通信双方的连接。TCP提供了数据的确认和数据重传的机制,保证发送的数据一定能到达通信的对方。
  • UDP协议:是无连接的,不可靠的传输协议。采用UDP进行通信时不用建立连接,可以直接向一个IP地址发送数据,但是不能保证对方是否能收到。
3.2 TCP详解
3.2.1 TCP三次握手
  • TCP三次握手,客户端发送syn->服务端回复syn+ack->客户端回复ack,在第一和第二步可确认客户端输入、输出是通的,在第二和第三部可确认服务端输入输出是通的。
  • TCP三次握手只在数据发送阶段之前,建立连接,客户端和服务端在内核中创建资源,用于后续数据的发送
  • TCP是面向连接的可靠传输协议。面向连接:三次握手之后,双方内核开辟资源为对方提供服务,即为面向连接了。 可靠:确认机制,每个发送包,都会有一个确认包。

在这里插入图片描述

3.2.3 发送数据

将应用层数据添加TCP首部形成TCP报文,传输给网络层

3.2.4 四次分手

TCP是可靠的传输协议,资源的释放,需要进行四次分手

  • 客户端发起fin,请求释放资源。
  • 服务端收到,回复fin +ack
  • 服务端发起fin请求释放资源
  • 客户端回复ack

在这里插入图片描述

3.3 socket详解
3.3.1 socket定义

socket套接字可以看成是一个五元组构成,源IP地址、目的IP地址、协议号、源端口、目的端口。

3.3.2 socket与TCP/IP关系

TCP/IP是传输控制层的协议栈,socket本身并不是协议,而是一个调用接口(API),通过socket,我们才能使用TCP/IP协议。Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、 listen、connect、accept、send、read和write等等。

3.3.3 socket三次握手

在这里插入图片描述
从图中可以看出,当客户端调用connect时,触发了连接请求,向服务器发送了SYN J包,这时connect进入阻塞状态;服务器监听到连接请求,即收到SYN J包,调用accept函数接收请求向客户端发送SYN K ,ACK J+1,这时accept进入阻塞状态;客户端收到服务器的SYN K ,ACK J+1之后,这时connect返回,并对SYN K进行确认;服务器收到ACK K+1时,accept返回,至此三次握手完毕,连接建立。

3.3.4 socket发送数据

read()、write()相关api

3.3.5 socket四次分手

在socket中,调用close即可,具体过程参考tcp四次分手

4. 网络层

4.1 IP、路由表
  • IP 地址为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
  • destination 目的网段 、genmask 子网掩码 、gateway 下一跳路由器入口的ip。
  • 路由表是决定下一条路由地址的。选择一个条目,将目的ip与掩码做&运算,将结果与目的网段相比较,若相同,则下一条地址为当前网关。由该图可知,当目的ip为当前局域网段内(192.168.150.0-192.186.150.255),选择默认路由,无需路由器。当目的ip非当前网段,则选择下一跳的路由器ip为192.168.150.2。
    -在这里插入图片描述
4.2 IP数据包

网络层将TCP报文添加IP首部,形成IP数据包,将IP数据包下一跳地址交给数据链路层

5. 数据链路层

5.1 arp协议

通过arp协议找到下一条路由器的mac地址
在这里插入图片描述

5.2 数据帧

通过arp协议找到mac地址,数据链路层在ip数据包上添加mac地址,形成数据帧

交换机能够识别mac地址,将数据包交给路由器
在这里插入图片描述

6. 物理层

在物理层上传输的数据单位是比特
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值