Public/tip & tech 122

[TCP/IP 소켓 프로그래밍] 9. 소켓의 다양한 옵션

9-1 소켓의 옵션 1. 소켓의 옵션 조작 : 소켓의 기본적인 특성(다양함)을 변경하는 것. ※ 운영체제에 의해 관리. 운영체제는 소켓의 특성에 대한 정보를 보관하고 있다. 2. 소켓의 기본적인 특성 - 입력 및 출력 버퍼의 크기 - 데이터 전송 방식(TCP 또는 UDP) - TTL(Time To Live) : 건너뛸 수 있는 라우터의 개수. hop과 관련됨. 3. 옵션은 대부분 변경(set) 가능하지만 참조(get)만 가능한 것도 있다. 소켓의 옵션 관련 함수 1. 현재 설정 상태 정보를 가져오는 함수. #include #include int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen); sock : 소켓을 ..

Public/tip & tech 2009.08.14

[TCP/IP 소켓 프로그래밍] 8. 도메인 이름과 인터넷 주소

8-1. DNS(Domain Name System) 1) 도메인 이름이란? 1. 영문으로 표현되는 계층적 주소 체계 방식. ※ IP 이후에 도메인이 나왔음. 중복되면 안 된다. 2. 각 나라마다 존재하는 Network Information Center에서 관리. => 약속 한국은 KRNIC(http://www.nic.or.kr, Korea Network Information Center)에서 담당. 3. 도메인 이름 = 호스트 이름 + 도메인 이름 예시) academy.freelec.co.kr = academy + freelec.co.kr 4. TCP/IP는 도메인 이름을 인식 못함. ※ IP와 도메인의 중계 역할을 하는 서버 : 도메인 서버 현실세계의 주소체계 인터넷 상에서의 주소체계 root 도메인 ..

Public/tip & tech 2009.08.14

[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