본문 바로가기

전체 글
[소켓프로그래밍] 4. 고정길이, 가변길이 데이터 TCP 통신 / 데이터 전송 후 종료 이 게시글은 'TCP/IP 윈도우 소켓 프로그래밍 (김선우 저, 한빛아카데미)'를 공부한 내용을 기반으로 작성됨TCP Server-client의 기본 구조는 직전 게시글에서 다룬 구조로 정해져 있다.따라서 직전 게시글의 코드 구조를 한 번 이해하고 나면 이를 마스터 코드로 두고 그대로 재사용 할 수 있다.그렇다면, 마스터 코드의 어느 부분을 바꾸어야 또 다른 응용 프로그램을 만들 수 있는 것일까?바로 '데이터 처리' 부분이다. 어떤 데이터를 어떤 형식으로 주고 받으며 처리할지를 결정하는 것이 바로 네트워크 응용 프로그램 개발자의 역할이다.  이번 게시글에서는 직전 게시글의 마스터 코드를 기반으로 고정길이 데이터 전송과 가변길이 데이터 전송을 수행해보도록 한다.고정길이 데이터 전송은 Server와 Clie..
[소켓프로그래밍] 3. TCP 서버 클라이언트 통신 이 게시글은 'TCP/IP 윈도우 소켓 프로그래밍 (김선우 저, 한빛아카데미)'를 공부한 내용을 기반으로 작성됨 책 2부로 넘어오자마자 굉장히 재밌는 실습이 나를 반긴다.. 그것은 바로 TCP server-client 통신   TCP server-client 통신은 위 도식과 같이 진행된다. 차례대로 알아보도록 하자. Server - socket() : socket()은 네트워크 프로그래밍에서 '소켓'을 생성하기 위한 함수. 소켓은 네트워크 통신의 endpoint를 의미하며, 소켓을 통해 서버-네트워크 혹은 컴퓨터-컴퓨터 간 데이터 통신이 가능해진다.Server - bind() : bind()는 소켓을 특정 IP 주소의 포트 번호에 연결하기 위해 사용됨. 소켓을 생성한 후에, 서버 소켓이 특정 IP 주소..
[소켓프로그래밍] 1. 소켓 생성과 닫기, 바이트 정렬 이 게시글은 'TCP/IP 윈도우 소켓 프로그래밍 (김선우 저, 한빛아카데미)'를 공부한 내용을 기반으로 작성됨  #define _WINSOCK_DEPRECATED_NO_WARNINGS // winsock c4996 처리#include #include #include using namespace std;#pragma comment(lib,"ws2_32.lib") // ws2_32.lib 라이브러리를 링크void err_quit(LPCTSTR msg){ LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, WSAGetLastError(), MAKELANGID(LANG_NEUTRA..
[네트워크] 37. 액세스 리스트 Access Control List 이 게시물은 킹 오브 네트워킹 (피터전)을 공부한 내용을 바탕으로 작성됨. 사실 지금 CCNA 준비하고 있어서 포스팅을 잠깐 쉬려했는데 CCNA 기출을 돌리면 돌릴수록 개념공부가 절실하다는 게 느껴진다.. 특히 ACL, NAT 부분은 출제빈도가 높은데 개념이 잘 안잡혀있으니까 답 찾기가 어렵다. 급할수록 돌아가라는 말이 이럴때 필요한 듯 ㅎㅎ 혹시 CCNA 준비하는 분들이 이 글을 본다면 ACL, NAT은 개념공부를 꼭 하시길 권장합니다. 액세스 리스트(ACL, Access Control List) 액세스 리스트는 일단 영어로 Access control list라고 쓰인다. 한국어로는 중간에 컨트롤을 빼먹고 말하니까 CCNA 처음 접근할 때 읭? 했다. ACL의 목적은 라우터에서 특정한 패킷을 차단/허용..
[네트워크] 35. BGP (eBGP) 이 게시물은 킹 오브 네트워킹 (피터전)을 공부한 내용을 바탕으로 작성됨. BGP(Border Gateway Protocol) BGP는 서로 다른 조직(AS)의 네트워크를 연결할 때 사용하는 라우팅 프로토콜이다. 예를 들어 서로 다른 두 ISP(Internet Service Provider) network를 연결할 때 사용된다. BGP를 사용할 때 link 한 개를 사용하는 방식을 single homing이라고 하고, 여러 개를 사용하는 방식을 multi homing이라고 한다. 실전에서는 대부분 multi homing을 사용하지만 우리는 입문자이므로 single homing을 이용한 실습을 해본다. 또한 BGP에서는 조직 당 하나의 BGP number가 부여되는데, 이 번호를 AS(Autonomous ..
[네트워크] 34. OSPF(Open Shortest Path First) 이 게시물은 킹 오브 네트워킹 (피터전)을 공부한 내용을 바탕으로 작성됨. OSPF (Open Shortest Path First) OSPF는 Link state 라우팅 프로토콜으로, 다른 라우터들에게 전체 네트워크 구성을 파악하기 위해 필요한 정보들을 광고한다. Distance vector 라우팅과는 다르게 단순히 최적경로만 찾는 것이 아니라, 말 그대로 네트워크에 존재하는 link들의 상태를 서로 교환하고 최종적으로 전체 네트워크 구성을 파악하는 것이 목표이다. 또한, 여기서는 distance vector 라우팅에서 사용되는 Split horizon(looping 방지)이나 자동축약은 불가능하다. 현재 사용되는 OSPF는 ver2이며, RFC 2328에 표준으로 규정되어 있다. OSPF는 IP pac..
[네트워크] 33. RIPv2, EIGRP 이 게시물은 을 공부한 내용을 바탕으로 작성됨. RIPv2 RIP(Routing Information Protocol)은 Dynamic routing protocol 중 가장 오래된 것으로 알고리즘이 매우 간단하고 설정도 쉽다. 하지만 그만큼 취약점이 많아 RIPv2가 개발되었고, 그에 따라 RIPv1는 거의 사용되지 않는다. RIPv2는 최적경로 계산을 위해 리처드 벨만 Richard Bellman과 레스터 포드 주니어 Lester Ford, Jr가 만든 벨만 포드 Bellman-Ford 알고리즘을 사용한다. 알잘딱 구성을 해주고... R1#show ip route Gateway of last resort is not set 1.0.0.0/8 is variably subnetted, 4 subnets,..
[네트워크] 32. 정적 경로 라우팅, 루프백 인터페이스, 디폴트 루트 이 게시물은 을 공부한 내용을 바탕으로 작성됨. 정적 경로 라우팅 바로 앞 게시글에서 배운 '라우팅 프로토콜'에 의해 선택된 경로는 바로 동적 경로(Dynamic route)이다. 이번 게시글에서 배울 정적 경로(Static route)는 라우팅 프로토콜이 아닌, 네트워크 관리자(사람)가 직접 설정한 경로를 의미한다. 정적 경로 라우팅을 실습과 함께 배워보자. R1(config)#no ip domain-lookup R1(config)#enable secret cisco R1(config)#line console 0 R1(config-line)#logg sync R1(config-line)#exec-t 0 R1(config-line)#line vty 0 4 R1(config-line)#password ci..