전체 글 216

[TCP/IP 소켓 프로그래밍] 7. 소켓 연결의 우아한 종료

※ 연결에 대한 내용이므로 TCP/IP 프로토콜에 대한 이야기. ※ 우아한 종료 = graceful close. (MSDN 참고) 7-1 소켓 연결 종료의 문제점 2개의 가상의 통로가 생성 (각 통로는 단방향) 스트림 : 연결된 상태 (데이터를 주고 받을 수 있도록 연결된 시스템의 내부적인 상황) 입력 스트림 : 데이터 수신을 위한 스트림 출력 스트림 : 데이터 전송을 위한 스트림 ※ TCP 소켓은 데이터를 전송하면서 동시에 수신도 가능하다. 소켓 연결 종료의 문제점 1. close, closesocket 함수 호출 : 입력, 출력 스트림 완전 종료 => 데이터를 송수신 할 수 없다. 데이터가 소멸된다. 2. 일방적인 방식의 완전 종료는 경우에 따라서 문제가 될 수 있다. 7-2 우아한 소켓의 연결 종료..

Public/tip & tech 2009.08.14

[TCP/IP 소켓 프로그래밍] 6. UDP 기반 서버/클라이언트

※ TCP와 UDP를 특징을 비교하면서 공부하는 것이 좋다. 6-1. UDP의 이해 1. IP를 기반으로 데이터를 전송한다. (TCP와 공통점) 2. 흐름제어(flow control)을 하지 않기 때문에 데이터 전송을 보장 받지 못한다. (TCP와 차이점) 3. 연결설정 및 연결 종료 과정도 존재하지 않는다. (TCP와 차이점) 4. 연결 상태가 존재하지 않는다. (TCP와 차이점) UDP의 역할 포트 정보에 의한 프로세스의 구분 UDP 패킷 = 데이터 그램(Datagram) 6-2. UDP 기반 서버/클라이언트의 구현 ※ 소켓을 생성하고 bind까지만 하면 바로 입출력함수를 사용하면 된다. (socket~bind : 서버, socket : 클라이언트) 일반적으로 연결 설정 과정을 거치지 않는다. 데이터..

Public/tip & tech 2009.08.14

[TCP/IP 소켓 프로그래밍] 5. TCP 기반 서버/클라이언트2

5-1. 에코 클라이언트! TCP 기반에서의 완벽 구현 TCP 기반의 데이터 전송 특징 한 번의 데이터 전송함수 호출이 늘 하나의 패킷을 형성하는 것은 아니다. ※ 버퍼 : 서버 프로그램 상의 문자 배열. ※ ABCD를 클라이언트에서 서버로 보냈지만 A,B,C,D와 같이 패킷이 나누어져서 서버가 클라이언트로 보낼 수 있다. ※ echo server에서는 클라이언트에서 문제가 된다. ※ 구현 : 클라이언트는 여러번 read(recv)함수를 호출해야 한다. -> for문에서 읽어들인 바이트수가 보낸 바이스만큼 읽을 때까지 반복한다. 패킷이 나누어져 보내지는 이유? 뒤에 밝힘 5-2. 경계가 없는 TCP 기반의 데이터 전송 데이터 송수신 함수의 호출 회수는 큰 의미를 지니지 않는다. 예시) 위의 내용을 증명하..

Public/tip & tech 2009.08.14

[TCP/IP 소켓 프로그래밍] 4. TCP 기반 서버/클라이언트1

4-1 TCP/UDP에 대한 이해 TCP/IP 프로토콜 스택 응용프로그램 계층 : 응용프로그램 응용프로그램 전송(Transport) 계층 : TCP UDP 네트워크 (Network)계층: IP 데이터링크 계층 : LINK 물리 계층 데이터링크 계층 LAN, WAN, MAN과 같은 네트워크 표준과 관련된 프로토콜의 정의한다. IP 계층 어떻게 길을 찾아 갈 것인가? 라우터끼리는 (도로사정)이 어떤지 서로 통신하여 패킷을 보낼 최적의 길을 찾는다. 신뢰할 수 없는 프로토콜(데이터가 손실 될 수 있고) 경로가 일정치 않으며 패킷을 보낸 순서도 보장하지 못한다. 비연결 지향 프로토콜이다. TCP/UDP (IP 계층을 기반으로 하여 ) 데이터를 어떻게 전송할 것인가? TCP/UDP(2가지 프로토콜) 중에 원하는 ..

Public/tip & tech 2009.08.14

[TCP/IP 소켓 프로그래밍] 3. 주소 체계와 데이터 정렬

3-1 Internet Address IP(Internet Address) 인터넷에 존재하는 호스트들을 구분하기 위한 32비트 주소 체계 점이 찍힌 십진수 표현 방식(Dotted-decimal Notation) : 211.217.10.9 클래스 Class A : 0.0.0.0 ~ 127.255.255.255, 1바이트는 네트워크 ID, 3바이트는 호스트 ID Class B : 128.0.0.0 ~ 191.255.255.255, 2바이트는 네트워크 ID, 2바이트는 호스트 ID Class C : 192.0.0.0 ~ 223.255.255.255, 3바이트는 네트워크 ID, 1바이트는 호스트 ID Class D : 멀티캐스트 주소. 224.0.0.0 ~ 239.255.255.255 Class E : 예약됨...

Public/tip & tech 2009.08.14

[TCP/IP 소켓 프로그래밍] 2. 소켓의 설정과 프로토콜의 설정

2-1 프로토콜 컴퓨터 상호간의 대화에 필요한 통신 규약 혼돈의 여지가 있으면 안되고 잘 정의(FM)되어야 한다. ※ 안 좋은 예 : 서버에서 accept 하자마자 읽는 연산을 수행. 2-2 소켓의 생성 기본적인 통신 도구 프로토콜에 독립적 : 사용자가 프로토콜을 정해주어야 한다는 점에서... 데이터 전송 형태(타입)를 지정해야 한다. 2-3 프로토콜 체계 #include #include int socket(int domain, int type, int protocol); domain : 프로토콜 체계. family (여러 가지 프로토콜이 합쳐져서 체계를 이룬다.) PF_INET : IPv4 (4바이트 2^32승개의 IP) PF_INET6 : IPv6 (16바이트 2^128승개의 IP, 약 10의 38승..

Public/tip & tech 2009.08.14

[TCP/IP 소켓 프로그래밍] 1. 네트워크 프로그래밍과 소켓의 이해

1-1. 네트워크 프로그래밍의 이해 네트워크 : 호스트(End-system)들을 연결하는 시스템 호스트 : PC, workstation, PDA 인터넷 : 멀리 떨어진 둘 이상의 네트워크가 연결되 이뤄진 거대한 네트워크 -> 라우터 : 이기종 네트워크를 연결하는 장비 1.2 소켓 이해하기 클라이언트/서버 모델 기계 아님. 서버 : 연결 요청을 기다린다. - Iterative(반복적인) Server : 한 순간에 하나의 클라이언트에게 응담 - Concurrent Server : 동시에 여러 클라이언트에게 응답한다. 클라이언트 : 서버에 요청하고 응답을 기다리는 호스트. 네트워크 프로그래밍 네트워크로 연결된 두 호스트 간의 데이터 송수신 소켓 : 원격에 존재하는 두 호스트를 연결시켜 주는 매개체. 운영체제에..

Public/tip & tech 2009.08.14

소켓 종료와 TIME_WAIT(Socket termination and TIME_WAIT)

소켓 종료와 TIME_WAIT(Socket termination and TIME_WAIT) 진리는어디에 2007/03/19 20:22 오늘은 소켓의 종료와 그에 따라 발생하는 소켓의 상태 변화에 대해 알아 보도록 하겠다. 먼저 소켓은 생성될 때는 3-way hand shaking을 통해서 생성되지만, 종료 될때는 한단계 더 많은 4-way hand shaking을 거쳐 종료 된다. four way handshake 위에서 분명히 4-way.. 4단계라고 이야기 했다. 그럼 어떤 4단계를 거치는지 알아 보자. 1. A가 B에게 연결 종료를 요청한다. 2. B는 바로 종료를 하는 것이 아니라, 단순히 ACK만을 날리고 있다. B도 종료 하기 전에 할 일이 있기 때문에 바로 FIN을 날리지 않고, 단순히 AC..

Public/tip & tech 2009.07.23

시력 감퇴

오른쪽 눈 시력이 많이 안좋아졌다. 그 이유는 눈을 쉬게 해주지 못해서다. 안구 운동이라도 제대로 해주자. 먼곳 큰 물체 바라보고 눈동자만 상하좌우로 ▦따뜻해 질 때까지 비빈 손으로 눈을 덮는다(1~2분) 눈을 감고 손바닥이 따뜻해 질 때까지 양손바닥을 비빈 후 양손바닥으로 눈을 살짝 덮는다. 이때 호흡은 배가 나오도록 깊이 들이쉬고 온 몸 속의 모든 노폐물을 다 내보낸다는 느낌으로 천천히 내쉰다. ▦시선을 고정한 채 코로 무한대(∞) 모양을 그린다(3~5분) 눈을 뜨고 시선을 정면에 고정한 채 코로 공중에 무한대 표시(8자를 옆으로 눕힌 모양)를 그린다. ▦먼 곳에 있는 큰 물체를 바라본다(2~3분) 한 곳에 초점을 맞추지 말고 10미터 이상의 먼 곳을 이곳 저곳 바라본다. 자세히 볼 필요는 없지만 가..