본문 바로가기

네트워크
[소켓프로그래밍] 6. 스레드 동기화 (임계 영역, 이벤트) 이 게시글은 'TCP/IP 윈도우 소켓 프로그래밍 (김선우 저, 한빛아카데미)'를 공부한 내용을 기반으로 작성됨 멀티스레드를 이용하는 경우, 두 개 이상의 스레드가 공유 데이터에 접근하면 여러 문제가 발생할 수 있다. 예를 들어 공유 변수 int money = 1000이 존재한다고 할 때, 스레드 #1이 money에 2000을 더하여 money = 3000이 되었다고 해보자. 이때 스레드 #2가 money = 3000이 되기 전에 이미 money를 read 해놓은 상태라고 해보자. 스레드 #2 입장에서는 money = 1000이기 때문에, 만약 이에 3000을 더해준다면 money = 4000이 된다. 이러한 상황이 발생하면 스레드 #1의 명령이 무시되는 것이므로, 오류로 볼 수 있다. 이러한 멀티스레드..
[소켓프로그래밍] 5. 스레드, 멀티스레드, 스레드 제어 이 게시글은 'TCP/IP 윈도우 소켓 프로그래밍 (김선우 저, 한빛아카데미)'를 공부한 내용을 기반으로 작성됨 직전 게시글에서 수행했던 TCP Server-Client 예제는 다음과 같은 문제를 갖는다. 여러 개의 Client가 Server에 접속하는 것은 가능하나, Server가 동시에 여러 Client에 서비스하는 것은 불가능하다. 예를 들어 두 개의 Client가 하나의 Server에 접속되어 있다면 먼저 접속한 Client가 Server에 전송한 메시지는 수신되지만, 늦게 접속한 Client가 전송한 메시지는 Server가 수신할 수 없다.이는 서버에 접속한 각 클라이언트들을 스레드를 이용하여 독립적으로 처리하여 해결한다. (멀티스레드)멀티스레드는 소켓 입출력 모델에 비해 비교적 쉽게 구현할 수..
[소켓프로그래밍] 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 주소..
[네트워크] 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,..