소켓 프로그래밍 (5) TCP와 UDP
TCP와 UDP에 대한 이해
TCP 프로토콜 스택
1. APPLICATION 계층
2. TCP계층
3. IP계층
4. LINK계층
UDP 프로토콜 스택
1. APPLICATION 계층
2. UDP계층
3. IP계층
4. LINK계층
APPLICATION 계층 : 무엇인가를 만드는 과정에서 프로그램의 성격에 따라 클라이언트와 서버간의 데이터 송수신에 대한 약속들. 대부분의 네트워크 프로그래밍은 APPLICATION 프로토콜의 설계 및 구현이 상당 부분을 차지한다.
TCP/UDP 계층 : IP계층에서 알려준 경로정보를 바탕으로 데이터의 실제 송수신을 담당한다. 전송계층 이라고도 한다.
IP 계층 ; 목적지로 데이터를 전송하기위해서 중간에 어떤 경로를 거쳐갈지 해결해주는 계층. 이 계층에서 사용하는 프로토콜이 바로 IP(Internet Protocol) - 비 연결지향적
LINK 계층 : LAN, WAN, MAN과 같은 네트워크 표준과 관련된 프로토콜을 정의하는 영역. 물리적인 영역의 표준화.
TCP기반 서버, 클라이언트 구현
서버의 함수 호출 순서
1. socket() : 소켓 생성
2. bind() : 소켓 주소할당
3. listen() : 연결요청 대기상태
4. accept() : 연결허용
5. read()/write() : 데이터 송수신
6. close() : 연결종료
클라이언트의 함수 호출 순서
1. socket() : 소켓 생성
2. connect() : 연결요청
3. read() / write() : 데이터 송수신
4. close() : 연결종료
Iterative 기반의 서버,에코 클라이언트
1. socket()
2. bind()
3. listen()
----여기부터 반복
4. accept()
5. read()/write()
6. close(client)
--------여기까지 반복
7. close(server)
기본 동작방식
서버는 한 순간에 하나의 클라이언트와 연결되어 에코 서비스를 제공
서버는 총 다섯 개의 클라이언트에게 순차적으로 서비스를 제공하고 종료
클라이언트는 프로그램 사용자로부터 문자열 데이터를 입력 받아서 서버에 전송
서버는 전송 받은 문자열 데이터를 클라이언트에게 재전송, 즉 에코시킴
서버와 클라이언트간의 문자열 에코는 클라이언트가 Q를 입력할 때까지 계속
리눅스 기반에서 윈도우 기반으로 바꿀 때 기억할 것
WSAStartup, WSACleanup 함수호출을 통한 소켓 라이브러리의 초기화와 해제
자료형과 변수의 이름을 윈도우 스타일로 변경하기
데이터 송수신을 위해서 read, write 함수 대신 recv, send함수 호출하기
소켓의 종료를 위해서 close