IP地址,32位,4个字节.采用十进制的格式表示,每一个字节用"."来分隔字节.
协议:为进行网络中的数据交换(通信)而建立的规则,标准或者约定.不同的层有不同协议.
OSI七层参考模型.(理论上)
应用层:远程登录协议Telnet,文件传输协议FTP,超文本传输协议HTTP,域名服务DNS,简单邮件传输协议SMTP,邮局协议POP3等等.....
传输层:传输控制协议TCP.(可靠) 用户数据报协议UDP.(非可靠,实时性较高.)
网络层:网际协议 IP, Internet互联网控制报文协议ICMP,Internet组织管理协议 IGMP.
一台计算机发送给另一台计算机的数据.首先会将该数据打包,打包的过程成为封装. 封装就是在数据前面加上特定的协议头部. OSI参考模型中,对等层协议之间交换的信息单元成为协议数据单元.
TCP/IP模型 4层 (实际应用中)
端口:应用程序通过系统调用与某端口建立连接后,传输层传给该端口的数据都被相应的进程所接受,相应进程发给传输层的数据都通过该端口输出.
套接字:套接字存在于通信区域中.通信区域也就是地址族(有点抽象).主要用于将通过套接字通信的进程的共有特性综合在一起. 套接字通常只与同一区域的套接字交换数据(可以跨区域通信,但这只在执行了某种转换进程后才能实现). Windows Sockets 只支持一个通信区域(网际域:AF_INET),这个域被使用网际协议簇通信的进程使用.
网络字节顺序:为了保证数据的准确性,在网络协议中需要指定网络字节顺序.TCP/IP协议使用16位整数和32位整数的高位先存格式.
流式套接字(SOCK_STREAM):提供面向连接,可靠的数据传输服务,无重复的发送,且按发送顺序接受. 基于TCP协议实现.
数据报式套接字(SOCK_DGRAM):提供无连接服务.数据包以独立包形式发送,部提供无错保证,数据可能丢失或重复,并且接受顺序混乱.基于UDP协议实现.
套接字修改属性函数. getsockopt().setsockopt()
基于TCP(面向连接)的SOCKET编程
基于tcp的socket编程的服务端程序流程如下:
1.创建套接字(sockt).........2.将套接字绑定到一个本地的端口(bind)........3.套接字设为监听,准备接受客户请求(listen)......4.当请求到来后,接受连接请求,返回一个新的对应于此连接的套接字(accept).......5.用返回的套接字和客户端进行通信(send/recv)......6.返回,等待另一个客户请求.......7.关闭套接字.
基于tcp的socket编程的客户端程序流程如下:
1.创建套接字(socket)........2.向服务器发出连接请求(connect)........3.和服务器端进行通信(send/recv).......4.关闭套接字.
基于UDP(面向无连接)的SOCKET编程.服务端如下:
1.创建套接字(socket).......2.讲套接字绑定到一个本地地址和端口上(bind).......3.等待接受数据(recvfrom)......4.关闭套接字.
基于UDP(面向无连接)的SOCKET编程.客户端如下:
1.创建套接字(socket)......2.向服务器发送数据(sendto).......3.关闭套接字.