TCP에서는 연결과정보다 중요한 것이 종료 과정이다. 종료 과정에서는 예상치 못한 일이 발생할 수 있기 때문이다. 일방적인 연결종료의 문제점 close 함수호출은 완전 종료를 의미한다. 완전 종료라는 것은 데이터를 전송하는 것은 물론 수신하는 것조차 더 이상 불가능한 상황을 의미한다. 상대방의 상태에 상관없이 일방적인 종료의 형태를 띤다. 때문에 한쪽에서의 일방적인 close 함수호출은 경우에 따라 좋지 못하다. 위 그림은 양방향으로 통신하고 있는 두 호스트의 상황을 나타낸 그림이다. Host A가 마지막 데이터를 전송하고 나서 close함수의 호출을 통해 연결을 종료하였다. 그래서 그 이후부터는 Host A는 Host B가 전송하는 데이터를 수신하지 못한다(데이터 수신과 관련된 함수의 호출 자체가 불가..
TCP와 UDP에 대한 이해 TCP/IP 프로토콜 스택이란, 인터넷 기반의 데이터 송수신을 목적으로 설계된 스택이다. 큰 문제를 작게 나눠 계층화한 결과로, 각 스택 별 영역을 전문화하고 표준화한다. Link계층 → IP계층 → (TCP계층 / UDP계층) → Application계층 으로 구성되어 있다. Link 계층 물리적 영역의 표준화 결과이다. LAN, WAN, MAN과 같은 물리적인 네트워크 표준 관련 프로토콜이 정의되어 있다. IP 계층 Internet Protocol을 의미한다. 경로의 설정과 관련있는 프로토콜이다. TCP/UDP 계층 실제 데이터의 송수신과 관련된 계층이다(Transport Layer). TCP : error control이 존재해 데이터의 전송을 보장하는 신뢰성이 있는 프..
소켓에 할당되는 IP주소와 PORT번호 인터넷 주소(Internet Address) 인터넷 상에서 컴퓨터를 구분하는 목적으로 사용되는 주소를 말한다. 4바이트 주소체계인 IPv4와 16바이트 주소체계인 IPv6가 존재한다. 소켓을 생성할 때 기본적인 프로토콜을 지정해야 한다. 인터넷 주소는 네트워크 주소와 호스트 주소로 나뉘게 되는데, 네트워크 주소를 이용해 네트워크를 찾고, 호스트 주소를 이용해 호스트를 구분한다. PORT 번호 IP는 컴퓨터에 부여하는 값으로 컴퓨터를 구분하는 용도로 사용되고, PORT번호는 소켓에 부여하는 값으로 소켓을 구분하는 용도로 사용된다. 하나의 프로그램 내에서는 둘 이상의 소켓이 존재할 수 있기 때문에, 둘 이상의 PORT가 하나의 프로그램에 의해 할당될 수 있다. 0~10..
Protocol(프로토콜)이란, 컴퓨터 상호간의 데이터 송수신에 필요한 통신규약이며 소켓을 생성할 때 기본적인 프로토콜을 지정해야 한다. #include int socket(int domain, int type, int protocol); domain : 소켓이 사용할 프로토콜 체계(Protocol Family) 정보 전달 type : 소켓의 데이터 전송방식에 대한 정보 전달 protocol : 두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달 →모두 프로토콜 정보와 관련있다. Protocol Family(프로토콜 체계) 프로토콜도 그 종류에 따라서 부류가 나뉘는데, 그 부류를 가리켜 프로토콜 체계라 한다. int domain에 들어가는 부분이다. Type(소켓의 타입) 데이터 전송 방식을 의미한다. 소켓..
네트워크 프로그래밍이란, 네트워크로 연결된 둘 이상의 컴퓨터 사이에서의 데이터 송수신 프로그램의 작성을 말한다. 소켓(Socket)은 네트워크(인터넷)의 연결 도구이며 OS에 의해 제공되는 소프트웨어적인 장치이다. 또한, 소켓은 프로그래머에게 데이터 송수신에 대한 물리적, 소프트웨어적으로 자세한 내용을 신경 쓰지 않게 한다. 소켓 프로그래밍에서 사용되는 함수들을 서버와 클라이언트 측으로 나누어 간단하게 살펴보자. Server socket TCP 소켓은 전화기에 비유될 수 있다. 소켓은 socket함수의 호출을 통해 생성한다. #include int socket(int domain, int type, int protocol); //성공 시 파일 디스크립터, 실패 시 -1 return bind 전화기에 전화..