SYSTEM PROGRAMMING
TCP/IP 소켓 프로그래밍 04. TCP와 UDP에 대한 이해
뉴암스테르담
2015. 8. 5. 21:26
TCP/IP 소켓 프로그래밍 04. TCP와 UDP에 대한 이해 ![]() ![]()
|
TCP 기반 소켓의 경우 '스트림 기반 소켓' 으로 Transmission Control Protocol 의 약자로서 '데이터 전송 과정의 컨트롤' 이라는 뜻을 담고 있다.
+ TCP / IP 기반 프로토콜 스택
+TCP / IP 프로토콜 탄생 배경
+ 개방형 시스템 (Open System )
- 표준화 작업을 통한 개방형 시스템 (Open System) 의 설계
- 객체 지향의 탄생 배경에도 소프트웨어 발전을 위해서는 표준이 필요하다는 생각이 큰 몫을 함
+LINK 계층
- LINK 계층은 물리적인 영역의 표준화에 대한 결과이다.
- LAN, WAN, MAN 과 같은 네트워크 표준과 관련된 프로토콜의 정의하는 영역
+IP 계층
- 목적지로 데이터를 전송하기 위해서는 중간에 어떤 경로를 거칠것인가? 를 해결하는 것이 IP 계층.
- IP 자체는 비 연결지향적이며 신뢰할수 없는 프로토콜이다.
+TCP / UDP 계층
- 경로를 기준으로 데이터를 전송
- TCP 는 신뢰성 있는 데이터의 전송을 담당
- IP는 오로지 하나의 데이터 패킷 ( 데이터 전송의 기본 단위) 이 전송되는 과정에만 중심을 두고 설계
- 데이터를 주고 받는 과정에서 서로 데이터의 주고 받음을 확인한다면, 그리고 분실된 데이터에 대해서 재전송 ..
- IP의 상위 계층에서 호스트 대 호스트의 데이터 송수신 방식을 약속하는 것이 TCP , UDP 이다.
- TCP 는 확인 절차를 거쳐서 신뢰성 없는 IP 에 신뢰성을 부여한 프로토콜이다.
+APPLICATION 계층
04-2. TCP 기반 서버, 클라이언트 구현
+TCP 서버에서의 함수 호출 순서
SOCKET() - BIND() - LISTEN() - ACCEPT() - READ()/WRITE() - CLOSE()
+ 연결 요청 대기 상태로의 진입
- int listen(int sock, int backlog);
- 서버가 '연결 대기 상태'에 있다는 것은 클라이언트가 연결 요청을 했을때 연결이 수락될때 까지 연결 요청 자체를 대기시킬수 있다는 것을 의미 ( backlog );
+ 클라이언트의 연결 요청 수락
- int accept(int sock, struct sockaddr *addr , socklen_t addrlen ) ;
- 연결 요청 대기 큐에서 대기중인 클라이언트의 연결 요청을 수락하는 기능의 함수
+TCP 클라이언트의 기본적인 함수 호출 순서
- SOCKET() - CONNECT() - READ() / WRITE() - CLOSE()
- int connect(int sock, const struct sockaddr* serveraddr, socklen_t addrlen);
04-3. Iterative 기반의 서버 , 클라이언트 의 구현