Socket相关介绍
Socket:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力(摘自百度百科)。
网络七层协议:
应用层(HTTP, SMTP, DNS, SSH, SNMP, ICMP(用来ping), DHCP等)
表示层
会话层
传输层(TCP, UDP, TLS, DCCP, SCTP, RSVP, OSPF 等)
网络层(IP (IPv4 · IPv6) , ICMP, ICMPv6, IGMP, IS-IS, IPsec, ARP, RARP等)
数据链路层
物理层
TCP/IP协议:传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。
IP协议负责把数据从一台计算机通过网络发送到另一台计算机。数据被分割成一小块一小块,然后通过IP包发送出去。由于互联网链路复杂,两台计算机之间经常有多条线路,因此,路由器就负责决定如何把一个IP包转发出去。IP包的特点是按块发送,途径多个路由,但不保证能到达,也不保证顺序到达。
TCP协议则是建立在IP协议之上的。TCP协议负责在两台计算机之间建立可靠连接,保证数据包按顺序到达。TCP协议会通过握手建立连接,然后,对每个IP包编号,确保对方按顺序收到,如果包丢掉了,就自动重发。
UDP没有TCP可靠,不需要建立连接,传输数据不一定能送达,但是速度较快.
Socket Family(地址簇, 网络层)
socket AF_UNIX unix本机进程间通信
socket AF_INET IPV4
socket AF_INET6 IPV6
Socket Type(传输层)
socket.SOCK_STREAM TCP
socket.SOCK_DGRAM UDP
socket.SOCK_RAW 原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以,其次,SOCK_RAW也可以处理特殊的IPV4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头(构造IP头,可以实现洪水攻击)。
socket.SOCK_RDM 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文,SOCK_RAM通常仅限于高级用户或管理员运行的程序使用。