관리 메뉴

드럼치는 프로그래머

[TCP/IP] TCP/IP 프로토콜 스택 ( 소켓 ) 본문

★─Programing/☆─TCP IP

[TCP/IP] TCP/IP 프로토콜 스택 ( 소켓 )

드럼치는한동이 2009. 1. 30. 05:59
1.TCP/UDP에 대한 이해
 

TCP/IP 프로토콜 스택

 

2.LINK 계층 - 네트워크 표준과 관련된 프로토콜을 정의하는 영역

 

인터넷 연결 구조

 

3 IP 계층 - 데이터를 보내기 위해 필요로 하는 방법

 

IP 라이우팅

 

3_1 TCP와IP의 관계

1.
==>IP를 기반으로 TCP가 구현 되었다면, 어떻게 연결지향 데이터 전송이
가능해 졌는가?

 

4.TCP/UDP 계층 - 데이터를 전송하는 방법을 정의

-TCP : 신뢰성 있는 데이터 전송 프로토콜

5.Application 계층

1.-소켓을 이용한 프로그램의 구현을 의미한다.

2.
2.-일반적으로 소켓 프로그래밍이라고 하면 Application 계층의 프로토콜을 정의하고 구현하는 것을 말한다.
3.--"Hello World 서버 / 클라이언트도 Application 프로토콜의 구현이다.
4.
4.-지금까지 이야기 해 온 내부 구조를 알지 못해도 소켓 프로그래밍이 가능하다.(소켓이 우리에게 제공하는 이점)

 

6.TCP기반 서버의 구현

-서버에서의 기본적인 함수 호출 순서

socket()   -->  bind() -->     listen()    -->  accept() --> read()&write() --> close()

소켓생성 -> 주소할당 -> 연결요청대기 -> 연결 허용 -> 데이터 송신 -> 연결 종료

-연결 요청 대기 상태 로의 진입

#include <sys/types.h>

int listen(int s, int backlog);

==>s' 연결 요청 대기 상태' 클라이언트의 연결 요청을 받아들이는 역할을 하게 될 소켓의 파일 디스크립터를 인자로 전달하게 된다.

==>backlog '연결 요청 대기 큐(queue)'의 크기를 나타낸다.

==>성공하면 0을 실패햐면 -1을 리턴

 

==>listen 함수는 전달되는 인자의 소켓을 서버 소켓이 되게 한다.

==>listen 함수는 연결 요청 대기 큐를 생성한다.

==>서버 소켓은 일종의 문지기 이다.

 

7.연결 요청 수락하기

#include <sys/types.h>

#include <sys/socket.h>

int accept(int s, struct sockaddr *addr, int *addrlen);

==>s는 서버 소켓의 파이 디스크립터를 인자로 전달

==>addr는 연결 요청을 수락할 클라이언트의 주소 정보를 저장할 변수의 포인터. 함수의 호출이 성공하면 addr이 가리키는 변수에는 클라이언트의 주소 정보로 채워지게 된다.

==>addrlen는 함수 호출시 인자로 addr 포인터가 가리키는 구조체의 크기를 저장하고 있는 변수의 포인터를 넘겨준다. 함수 호출 성공시 리턴 받은 클라이언트의 주소 정보 길이가 바이트 단위로 변수 안에 채워 진다.

 

 

연결요청 수락 상태

Comments