페이지 선택

TCP 통신관련 시스템 함수 

네트워크 통신을 지원하는 O/S 에서 TCP 통신 관련한 시스템 함수들에 대해 간단하게 설명한다.

이 시스템 함수들은 TCP 통신에 필요한 요소들을 모듈화 해 놓은 함수들 이므로 이 함수들을 살펴 보는 것도 TCP 통신을 이해하는 데 많은 도움이 될 것이다.

각 O/S 별로 시스템 함수의 명칭은 다를 수 있겠지만 가장 묘사적인이거나 통상적으로 언급되는 명칭으로 명기하여 간단히 설명한다..

 

 

 

socket() →  소켓  생성 

파라미터  
수행동작

♦ 프로토콜 스택에 소켓의 정보를 저장하기 위한 메모리 할당

♦ 소켓번호 생성 → 소켓번호는 O/S에서 파일디스크립터(fd)로 표현된다

반환값 파일 디스크립터/소켓번호 ← 프로토콜 스택 상에서 각 소켓을 구분해 주는 번호(포인터)

 

 

bind() →  소켓 결합(서버기능)

파라미터 소켓번호, 소켓주소(IP, Port)
수행동작

소켓번호와 소켓주소를 하나의 쌍으로 맺어 준다 → 어플리케이션 레이어에서 사용되는 소켓번호가 이로써 TCP 통신채널과 연결된다.

⊕ 여기서 결합된 소켓은 Gatekeeper 소켓

반환값 0(성공) / -1(실패)

 

 

listen() →  접속 대기(서버기능)  

파라키터 소켓번호
수행동작

♦ 소켓이 클라이언트의 접속을 대기하는 상태가 되도록 전환 → 즉 생성된 소켓이 서버역할을 하는 소켓이 되도록 전환

♦ 클라이언트들로 부터의 연결 요청은 순서대로 Queue에 저장되어 관리

반환값 0(성공) / -1(실패)

 

 

connect() → 소켓 연결 (클라이언트 기능)

파라미터 클라이언트 소켓번호, 서버의 소켓주소(IP, Port)
수행동작

♦ 클라이언트 포트번호는 시스템에서 자동 할당

♦ 클라이어트가 서버의 소켓조소로 소켓연결 요청 → 3-way handshake 방식으로 소켓 연결  ⊕ 연결된 소켓 = session이라 함.

♦  쌍방 소켓 연결 성공(클라이언트 소켓 조립완료) → 소켓번호 와 소켓주소(서버)의 쌍을 맺어 놓아 데이터송수신에 이용

반환값 0(성공) / -1(실패)

 

 

accept() → 소켓 연결(서버 기능) 

파라미터 서버의 소켓번호, 메모리 포인터(클라이언트 소켓주소를 저장할 메모리)
수행동작

♦ listen 동작의 결과로 클라이언트의 소켓연결 요청을 처리 → 3-way handshake 방식으로 소켓 연결을 수행

♦  쌍방 소켓연결 성공(서버 소켓 조립완료) → 새로운 소켓번호를 생성하여 소켓주소(클라이언트)와 쌍을 맺어 놓는다.

반환값 성공(파일 디스크립터/클라이언트 소켓번호)/-1(실패) ← 프로토콜 스택 상에서 각 소켓을 구분해 주는 포인터/번호

 

 

send() → 데이터 송신

파라미터 소켓번호, 데이터(send), 수신버퍼의 주소(recv)
수행동작

♦ 상위 레이어로부터  내려온 데이터를 송신 버퍼에 저장하여 하위레이어에 적절하게 전달한다.

♦ 데이터 송수신은 클라언트 소켓과 서버소켓을 이용한다.

반환값 0(성공) / -1(실패)

 

 

recv() → 데이터 수신

파라미터 소켓번호, 데이터(send), 수신버퍼의 주소(recv)
수행동작

♦ 하위 레이어로 부터 올라온 데이터를 수신 버퍼에 저장한후 적절하게 상위레이어에 전달한다.

♦ 데이터 송수신은 클라언트 소켓과 서버소켓을 이용한다.

반환값 0(성공) / -1(실패)

 

 

close() → 소켓종료

파라미터 소켓번호
수행동작

♦ 소켓연결(session) 헤제

♦ 소켓에 할당된 Port 번호 해제

반환값 0(성공) / -1(실패)

 

 

 

 

 

 

Viewed Page List