TCP/IP有几层?
应用层(ftp,http,dns)
传输层(tcp,udp)
网络层(ip)
链路层(交换机,网卡)
OSI分层:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
TCP:面向连接、传输可靠(保证数据正确性和数据顺序)(端到端通信)、用于传输大量数据、速度慢、建立连接需要开销较多(时间,系统资源)
UDP:面向非连接、传输不可靠、用于传输少量数据、速度快
组播(群播)地址:224.0.0.0至239.255.255.255
IP数据包格式:
版本(4位):指IP协议的版本
首部长度(4位):单位是4字节
服务(8位)
总长度:首部及数据之和的长度
标示(16位):IP软件在存储器维持一个计数器,每产生一个数据包,计数器就加一,并将此值赋给标示字段
标志
片位移(13位):相对用户数据字段的起点
生存时间(TTL):数据报在网络中的寿命
协议:指出此数据报携带的数据时使用何种协议
首部检验和
源地址(32位)
目的地址(32位)
数据包发送:
应用程序调用API,将数据发送给socket
socket检查数据类型,调用相应的send函数
send函数检查socket状态、协议类型、传给传输层
传输层协议(tcp/udp)给数据创建数据结构,加入协议栈头部,比如端口号,检验和,传给网络层
网络层协议(ip)添加ip头,比如源和目的IP地址,首部检验和等
如果数据包大小超过了MTU,则分片发送,IP层将数据传给链路层
最终发送到网络和目的主机