TCP ip 19

#003_Window_Network_ 윈도우 소켓 초기화 및 종료

안녕하세요 삽잡이입니다. 이번 시간에는 기본적으로 네트워크 프로그래밍에 도움이 될만한 것들을 찾아서 알아보도록 하겠습니다. 네트워크 프로그래밍을 하면서 가장 기초적인 작업은바로, 윈도우 소켓을 장착시키는 것입니다. 너무도 당연하지요.... 윈도우 소켓도 종류가 많은데 가장 최신버전은 2.2버전입니다. 그 헤더는 winsock2.h이지요...이전 시간에 언급을 했었습니다. 윈도우 소켓을 사용한다는 것은 다른 PC와의 통신이 가능한 프로그램을 만들기 위해서라구요...우리가 통신을 하며 데이터를 주고 받는데 OS의 역할이 필요한데,OS가 역할을 하기 위해서는 통신을 위한 네트워크 lib가 필요하다고 했었습니다.물론 모든 기능들은 DLL 파일에 있겠지만, DLL의 암묵적인 연결을 지원하는 라이브러리 말입니다. ..

#002_Window_Network_ Intro (TCP/IP 4계층)

안녕하세요 삽잡이입니다. 이번 시간에는 TCP/IP 4계층을 통해데이터가 목적지의 PC에 어떻게 전달되는지 생각해보는 시간을 가져보겠습니다. 네트워크에는 전송을 위한 OSI 7계층이라는 개념이 있습니다. 이론 쪽인데...소켓을 처음 고안해낸 버클리 대학쪽에서 TCP/IP라는 4계층을 만들어 냈습니다...이를 통해 우리는 데이터가 어떻게 날라가는지 확인을 해보도록 하지요... 각 계층별로 핵심을 소개하겠습니다.이해가 가지 않더라도 우선은 가볍게 보시길 바랍니다. 우선 링크 계층에서는 '일대일 전송'을 보장해주고, 데이터 통신을 위한 하드웨어에 관련된 정의를 담당합니다. 다음으로 인터넷 계층에서는ID 번호를 보고 컴퓨터간에 통신을 할 수 있도록 해줍니다.그리고 'IP'를 집어넣습니다... 따라서 데이터를 보..

[Surro] :: 6. 라우팅

1. 라우팅 - 서로 다른 네트워크 간의 통신에서 패킷은 어러 개의 라우터를 경유하여 수신처에 도달한다. 1. 수신처가 다른 네트워크일 때 일단 라우터 앞으로 패킷을 보낸다. 2. 회수한 패킷의 수신처를 보고 다음에 전송할 라우터를 결정한다. 3. 여러 개의 라우터를 거쳐서 패킷을 받는다. 1-1 라우팅 테이블 - 경로 제어표. - 회수한 패킷의 수신 IP 주소를 보고 라우팅 테이블을 참고로 다음에 어떤 라우터에게 전송할지를 결정. + 수신 네트워크 : 라우터가 파악하고 있는 네트워크의 네트워크 주소와 서브넷 마스크가 들어간다. + 다음 홉 주소 : 수신 네트워크에 전달하기 위한 다음 전송처가 되는 라우터의 IP 주소와 서브넷 마스크가 들어간다. + 메트릭(판단 기준) : 경로의 최적도를 나타내는 수치가..

[Surro] :: 5. 데이터링크 층과 물리 층

1. 데이터 링크 - 동일한 방법으로 연결된 한 덩어리의 기기. - 네트워크 층과 물리 층의 중개자. - 데이터 링크간의 차이를 흡수, 네트워크 층보다 위에 있는 층이 그 차이를 의식하지 않고 작동할 수 있도록 하는 것이 데이터 링크 층의 역할. 1-1 데이터 링크층의 프로토콜 - 데이터 링크 안에서 데이터를 어떻게 주고받을지를 결정하는 것. 1-2 데이터 링크 구성요소 - 노드 : 데이터 링크 상에 있는 기기.(컴퓨터, 라우터 등) - 통신 매체 : 노드 간을 연결하는 케이블 등. (금속선 케이블, 광섬유 케이블, 무선) - 노드와 통신 매체를 연결하는 기기 : 비트열과 신호를 변환하는 것(네트워크 인터페이스 카드 - NIC, 모뎀 등) + NIC : 컴퓨터에서 네트워크로 가는 통로. 1-3 MAC (..

[Surro] :: 4. 네트워크 층

1. 네트워크 층 - 수신인의 컴퓨터에 데이터를 전달하는 역할을 함. - 통신 상대를 지정한다. - 수신처까지의 적절한 루트를 찾아 가는 경로를 결정한다. 1-1 IP protocol - 네트워크 층의 중심이 되는 프로토콜. - 송신측에서는 트랜스포트 층으로 부터 데이터를 받아서 수신처에 특정 번호(IP 주소)등을 기록한 IP 헤터를 붙여서 데이터 링크측에 전달. - 비커넥션형 통신 수행. (받았는지 확인하지 않고 계속 보냄) 1-2 IP adress - 네트워크상의 기기를 구별하기 위한 번호(32 bit). ex) 192.168.11.3 > 네트워크 부 + 호스트 부 >> 네트워크 부와 호스트 부의 경계를 나타내기 위해 서브넷 마스크 값을 사용. ex) 255.255.0.0 +서브넷 마스크는 네트워크 ..

[Surro] :: 3. 트랜스포트 층

1. 트랜스포트 층 - 애플리케이션 층과 네트워크 층의 중개 역활 1-1 TCP - 일 대 일 통신. (커넥션형 통신) 1. 수신측이 데이터를 받을 수 있는 상태인지 확인후 통신 개시 > 통신연결 2. 데이터를 일정하게 분할, TCP 헤더를 붙여서 순서대로 송신 3. 다 보낸 후 통신 종료 1-2 TCP 헤더 + 컨트롤 플래그 : 상대에게 전하고 싶은 항목은 1로 만든다. - URG(Urgent) : 세그먼트가 긴급한 데이터를 갖고 있다 - PSH (PUSH) : 세그먼트를 바로 애플리케이션 층에 전달 - ACK (Acknowledgement) : 통신 확인에 대해 알았다고 응답 - RST (Reset) : 통신을 강제정으로 해제 - SYN (Synchronize) : 통신 개시 요청 - FIN (Fin..

[Surro] :: 2. 애플리케이션 층

1. 애플리케이션 층 - 컴퓨터끼리의 주고받기를 사용자가 이용할 수 있는 '통신 서비스'라는 형태로 만드는 층 > 통신 서비스를 실현하는 것 1-1. 애플리케이션 헤더 - 애플리케이션 층에서 추가되는 헤더 - 요청과 응답에 관한 정보가 들어있음 - 애플리케이션 헤더에 무엇을 어떻게 쓸지는 프로토콜에 따라 다름 (텍스트기반, 바이너리 기반) - 클라이언트가 서버에 서비스를 요청할 때 구체적인 데이터를 주고받지 않고 어떤 연락만 취할 때는 데이터 부분이 비어있는 상태로 보냄 2. HTTP protocol - 하나의 요청에 대해 하나의 응답을 반환하는 프로토콜. - 요청(request), 응답(response)라는 두 종류의 패킷을 사용하여 텍스트 형식으로 주고받기를 수행. - '요청된 데이터를 반환하는 것'..

[Surro] :: 1. Intro

1. 네트워크란? - network : 망상 조직, 망 > 정보나 노동력 등 어떤 자산을 서로 주고받을 수 있는 상태. >> 네트워크의 경우에서 컴퓨터끼리 데이터를 잘 주고받기 위해서는 특별한 규칙이 필요 : 프로토콜 +프로토콜 : 송신측과 수신측이 데이터를 주고 받기 위해 미리 정해 놓은 공통된 매뉴얼 1-1. 컴퓨터 네트워크란? - 컴퓨터끼리 케이블 (동측 케이블, 광섬유 케이블 ...)이나 적외선, 전파 등 어떤 수단을 사용하여 연결해 다양한 데이터를 주고받을 수 있는 상태. 1-2 컴퓨터 네트워크의 규모 - LAN < WAN < 인터넷 + LAN : 비교적 좁은 공간에 있는 기기끼리 연결한 네트워크 + WAN : 비교적 대규모의 네트워크 + 인터넷 : 여러 개의 LAN, WAN을 연결한 전 세계 ..

[삽잡이::Socket] 소켓의 이해

1. 프로토콜 - 대화에 필요한 통신 규약. - 약속 (컴퓨터 상호간의 대화에 필요한 통신규약) 2. 소켓 - 네트워크상에서 서버와 클라이언트 두개의 프로그램이 특정 포트를 통해 양방향 통신이 가능하도록 만들어주는 소프트웨어 장치. - IP adress 와 Port number가 합쳐진, 네트워크 상에서 서버 프로그램과 클라이언트 프로그램이 통신 할 수있도록 해주는 소프트웨어 장치. Linux 기반 파일 조작하기. 파일 디스크립터 - 0 (표준입력 stdin) - 1 (표준출력 stdout) - 2 (표준에러 stderr) 1. 파일 열기 #include #include #include int open(const char *path, int flag); -path : 파일 이름을 나타내는 문자열의 주소 ..