传输层:UDP协议 TCP协议 (UDP简单但不可靠,TCP复杂但可靠)
端口号:发送数据时,要带上本身进程的端口号,那么发送回来时,通过端口号才知道是哪个进程 (端口号总是和进程相关)
有“源端口号”“目的端口号”
在TCP/IP协议中,用“源ip”和源端口号” ”目的ip“ "目的端口号" “协议号”这样一个五元组来标识一个通信
知名端口号:
ssh服务器,22端口 可以远程连接
ftp,21 做文件传输
一般操作远程主机时就使用ssh协议和ftp协议
http,80
https,442
(http明文,https密文,需要加密解密的过程)
一个进程是否可以绑定多个端口号:
答:可以
一个端口号是否可以被多个进程绑定?
答:不可以,一个端口号只能绑定一个进程
【UDP】协议
一个端口代表一个进程。UDP协议实现了端口,从而让某个数据包可以在送到指定IP地址的基础上,
进一步传送到某个端口。
【UDP 特点】
传输的过程类似于寄信:
1、(无连接):知道对端的IP和端口号就直接进行传输,不需要建立连接
2、(不可靠):没有确认机制,没有重传机制;如果因为因为网络故障无法发到对方,
UDP协议层也不会给应用层返回任何错误信息。UDP发送数据时,只要将数据发出去就可以了,至于
接收端有没有收到,UDP本身是没有保障的 (重点!!!!)
3、(面向数据报):不能够灵活的控制读写数据的次数和数量,应用层交给UDP多长的报文,UDP都会
原样发送,不会拆分,也不会合并
【缓存区】:
1、UDP没有真正意义上的发送缓冲区,实质上是由网络层进行传输动作
2、UDP有接收缓存区,但是不能发送UDP报的顺序和接收UDP报的顺序一致,如果缓冲区满了,再
到达的UDP数据就会被丢弃。
双全工: UDP的socket既能读,也能写
【注意】:一个UDP能传输的数据最大长度是64kb。如果超出64kb,就要再应用层手动分包,然后
进行多次发送,并且在接收端进行手动拼装
【基于UDP应用层协议】
1、NFS:网络文件系统
2、TFTP:简单文件传输协议
3、DHCP:动态主机配置协议
4、BOOTP:启动协议
5、DNS:域名解析协议
6、自己写的UDP程序中自定义的应用层协议
【TCP协议】:
全称是“传输控制协议”,即对一个数据的传输进行的详细的控制。属于传输层。
格式:
源/目的端口号:标识数据从哪个进程,到哪个进程去
TCP头部最大长度是15*4=60
16位校验和:接收端校验不通过,则认为数据有问题,校验不仅包含tcp首部,也包含tcp
数据部分
16位紧急指针:标识哪部分数据是紧急数据
【确认应答(ACK)机制】:
每一个ACK都有对应的确认序列号,意思告诉发送者,哪些数据收到了,下一次从哪里
开始发
【超时重传机制】:
1、如果主机A发送数据B之后,可能因为网络拥堵等原因,数据无法到达主机B
2、如果主机A在一个特点时间间隔内,没有收到主机B的确认应答,就会进行重发,如果重传累计达到
一定的次数,TCP会认为网络对端主机出现异常
但是,如果主机A没有收到确认应答,也可能是ACK丢失了,主机A就会又重发一遍,主机B就会
收到很多的重复数据,TCP这时就可以识别哪些包是重复包,并且去重,序列号就可以帮助去重
【连接管理机制】
TCP要经过三次握手建立连接,四次挥手断开连接