Network
-
Docker Network [3/3 - libnetwork]Docker 2021. 7. 11. 00:40
여태까지 docker의 driver를 통한 networking 기술을 알아보았고, 이제 libnetwork로 1/3에서 제시했던 기본 routing과 같은 기능 외에 구현되어 있는 기능들에 대해서 알아봅니다. service discovery load balancing Service discovery 모든 container들과 swarm의 서비스들이 이름을 통해서 각 각을 찾을 수 있도록 하는 것이다. Docker는 자체적으로 내부의 DNS 서버를 이용하여 이를 수행한다. 과정을 요약하자면 다음과 같다. container가 이름을 통해서 특정 container를 찾아야 함을 인식한다. 먼저 Local 내부에서 이에 대한 정보를 갖고 있는지를 탐색한다. -> 있다면, 종료 Docker DNS server에 ..
-
Docker Network [2/3 - drivers]Docker 2021. 7. 11. 00:04
저번 글에 이어서 이번에는 docker network의 driver들에 대한 자세한 내용을 다루겠다. bridge networks overlay networks host networking IPVlan networks MacVlan networks Bridge Network container간의 통신을 위해서 필요한 것이 bridge 네트워크이다. 하지만, 여기서 주의해야할 것은 오직, single host에서만 동작한다는 점이다. 즉, 다른 docker host에 존재하는 container와는 연결이 불가능하다. 그렇다면, bridge가 무엇인가? 이는 두 개의 network 장치를 연결하는 L2 switch를 말한다. 즉, container를 연결하는 도구라고 보면 되겠다. 이를 통해서 연결된 con..
-
Docker Network [1/3 - overview]Docker 2021. 7. 10. 21:21
Docker Swarm을 docker stack을 이용하여 실행시키게 된다면, 무엇이 생성되는가? 우리는 서비스가 생성되기도 전에 network가 생성되는 것을 볼 수가 있다. container와 container간 그리고, host를 통해 외부 internet환경에 container를 연결 시키는 모든 과정을 알아보자. Docker를 사용하다보면, host와 통신을 위해 외부로 port를 열어주는 것과 container 간의 통신을 헷갈려 하는 사람들이 생각보다 많은 것 같다. 심지어는 container간 통신을 위해서 localhost로 정보를 주고받을려고 하는 몹쓸 시도를 하는 관경도 몇몇 봐왔다. 따라서, 우리는 한 번 Docker의 network에 대해서 한 번 공부해보는 것이 좋을 것이다. 해..
-
TCPNetwork 2021. 4. 15. 17:29
TCP, Tranmission Control Protocol이라는 이름에서도 느껴지듯 상당히 정교한 control을 포함하는 protocol입니다. OSI Transport Layer에서 연결 지향이며, 신뢰할 수 있는 데이터 전송을 보장합니다.(Reliable Data Transfer) Transport Layer에 존재하기 때문에, 종단에만 존재하는 규칙입니다. 시작하기에 앞서 필요한 용어 정의부터합니다. Socket vs Buffer Socket : process의 데이터를 Trasport layer으로 전달하는 통로이다. 이때 데이터는 stream 형태로 전달됩니다. process는 한 번에 여러 개의 socket을 가질 수 있으며, 이를 통해서 socket을 가진 다른 process와 통신이 가..
-
GBN & Selective repeatNetwork 2021. 3. 24. 11:09
Pipelining 이전 Posting에서 정리한 RDT는 여러가지 일을 할 수 있지만, "너무 느리다"라는 문제 상황에 도달합니다. 그 이유는 바로 "stop-and-wait" 방식을 수행하기 때문입니다. packet을 전송하고, 이에 대한 ACK가 올 때까지 그저 기다리는 형태의 RDT는 네트워크의 성능 저하에 큰 원인이 됩니다. 따라서, 우리는 마치 pipe를 따라 흐르는 물처럼 막힘 없이 데이터를 보내고자 하는 방법을 고안해야 했습니다. 이 과정에서 위에서 언급한 바와 같이, 연속해서 데이터를 보내는 방식을 pipelining이라고 하고, 이로 인해 발생할 수 있는 추가적인 문제를 해결하기 위한 방법으로 2가지의 방식을 대표적으로 이해합니다. pipelining의 문제 가장 큰 문제는 데이터가 중..
-
RDT ProtocolNetwork 2021. 3. 15. 19:52
Reliable Data Transfer Protocol(신뢰할 수 있는 데이터 전송 규칙)을 수립하기 위한 고민의 과정을 다음과 같이 정리합니다. 각 단계를 거치면서, 가정을 조금씩 걷어내며 신뢰도를 계속해서 높입니다. FSM 모든 예제를 FSM을 이용하여 표기하기 때문에, FSM에 대해서 이해하고 가는 것이 편합니다. FSM(Finite State Machine)이란, 유한한 관계에서 각 상태와 각 상태로 가기 위한 조건과 행동을 명시하는 도표를 말합니다. 기본적으로 다음과 같은 형태로 이루어지는 것이 일반적이다. 시작 지점을 화살표를 통해 명시하고, 어떤 상태에서 각 조건과 이에 따른 행동을 했을 때, 변하게 될 상태를 명시하는 것이다. RDT v1.0 가정 : 하위 통신 channel은 완벽하게 ..