네트워크
11 posts
내가 또 보기 위한 TCP 혼잡제어

🌩 왜 혼잡제어가 필요할까? 라우터에 패킷이 몰리면 패킷이 유실되고 패킷을 재전송 하면서 네트워크는 더 혼잡해진다. 송신측에서 이러한 문제를 해결하기 위해 전송속도를 줄이는 혼잡 제어를 사용한다. 🌩 AIMD Additive Increase, Mutiplicative Decrese 패킷을 하나씩 보내고 문제없이 도착하면 window 크기를 1개씩 증가한다. 패킷 전송에 실패하면 속도를 절반으로 줄인다. 이 경우 나중에 네트워크에 진입한 쪽이 처음에는 불리하지만 점점 동일한 평형상태가 되기 때문에 공정하다. 네트워크 혼잡을 미리 감지하지는 못하고 혼잡하면 대역폭을 줄인다. 🌩 Slow Start AIMD는 처음 전송속도를 올리는 것이 너무 느리다는 단점이 있다. slow start는 처음에는 문제가 없다면 윈도우 사이즈를 지수함수꼴로 증가한다. 혼잡 현상이 발생하면 window사이즈를 1로 떨어뜨린다. 하지만 이때는 네트워크의 혼잡율을 어느정도 예상할 수 있다. 따라서 혼잡 현상이 …

October 22, 2021
네트워크
성공과 실패를 결정하는 1%의 네트워크 원리_10

다음은 성공과 실패를 결정하는 1%의 네트워크 원리 를 읽고 정리한 내용입니다. 본 글은 CH6. 웹 서버에 도착하여 응답 데이터가 웹 브라우저로 돌아간다 입니다 🙌 🛺 [Story3] 웹 서버 소프트웨어가 리퀘스트 메시지의 의미를 해석하여 요구에 응한다. 1. 조회의 URI를 실제 파일명으로 변환한다 http 요청 메세지의 메소드와 URI에 따라서 웹 서버 내부의 동작이 달라진다. URI에 적힌 경로에 따라서 데이터를 얻어 응답하는 것이다. 하지만 이 데이터를 반드시 디스크에서 읽는 것은 아니다. URI에 기록된 경로명의 파일을 읽어오면 디스크의 파일이 전부 노출되기 때문에 무방비해진다. 해결 방법으로 웹 서버에 공개하는 디렉토리를 디스크의 실제 디렉토리가 아니라 가상으로 만든 디렉토리 구조를 사용하도록 한다. 웹 어플리케이션 내부에서 가상으로 설정한 디렉토리와 실제 데이터를 대응하여 해당 데이터를 반송하도록 한다. 만일 브라우저에서 보낸 URI에 마지막 파일명이 생략되면 def…

October 07, 2021
네트워크
성공과 실패를 결정하는 1%의 네트워크 원리_9

다음은 성공과 실패를 결정하는 1%의 네트워크 원리 를 읽고 정리한 내용입니다. 본 글은 CH6. 웹 서버에 도착하여 응답 데이터가 웹 브라우저로 돌아간다 입니다 🙌 🛺 [Story1] 서버의 개요 1. 클라이언트와 서버의 차이점 서버도 클라이언트로부터 전송된 패킷을 받기 위해서 준비 단계를 거쳐야한다. 서버와 클라이언트의 차이점 네트워크와 관련된 전체적인 구조는 비슷한 형태를 지니고 있다. 하지만 서버는 소켓을 미리 열고 클라이언트의 연결을 기다린다는 점, 여러 클라이언트와 소통해야 한다는 점에서 클라이언트와 차이점을 가지고 있다. 2. 서버 어플리케이션의 구조 서버 프로그램에서 다수의 클라이언트와 소켓 통신을 하기 위해서 다음과 같은 구조로 진행한다. 서버 프로그램에서 클라이언트의 접속을 기다리는 부분과 클라이언트와 대화를 하는 부분을 나눈다. 클라이언트와 대화를 하는 부분은 각 클라이언트와 1대1로 대화를 한다. 따라서 대화가 섞이지 않는다. 서버 OS의 멀티태스크, 멀티스레…

October 07, 2021
네트워크
성공과 실패를 결정하는 1%의 네트워크 원리_8

다음은 성공과 실패를 결정하는 1%의 네트워크 원리 를 읽고 정리한 내용입니다. 본 글은 CH5. 서버측의 LAN에는 무엇이 있는가?_방화벽과 캐시 서버의 탐험입니다 🙌 🛺 [Story4] 캐시 서버를 이용한 서버의 부하 분산 1. 캐시 서버의 이용 프록시 구조를 사용하여 데이터를 캐시에 저장한다. 프록시는 웹 서버와 클라이언트 사이에 들어가서 웹 서버에 대한 액세스 동작을 중개한다. 중개하는 과정에서 웹 서버에서 받은 데이터를 저장해두고 가능하면 해당 데이터를 대신하여 응답한다. 웹 서버가 처리해야할 일을 실행하기 위해서 오랜 시간이 걸리는 반면 캐시 서버는 받은 데이터를 곧바로 송신만 하면 되기 때문에 매우 빠르다. 데이터가 자주 바뀌는 부분은 캐시 서버를 활용하기 어렵다. 하지만 캐시 서버에서 처리할 수 있는 얼마를 담당하면 웹 서버에 가는 부하도 줄어들어 처리속도도 향상된다. 2. 캐시 서버는 갱신일로 콘텐츠를 관리한다 캐시 서버가 동작할 때 캐시 서버를 웹 서버 대신 DN…

October 06, 2021
네트워크
성공과 실패를 결정하는 1%의 네트워크 원리_7

다음은 성공과 실패를 결정하는 1%의 네트워크 원리 를 읽고 정리한 내용입니다. 본 글은 CH5. 서버측의 LAN에는 무엇이 있는가?_방화벽과 캐시 서버의 탐험입니다 🙌 🛺 [Story1] 웹 서버의 설치 장소 1. 사내에 웹 서버를 설치하는 경우 사내 LAN에 서버를 설치하고 인터넷에서 직접 액세스 하는 경우 (a) 이 경우는 현재 주류가 아님 IP 부족 - 이 경우 서버와 클라이언트에도 글로벌 주소를 할당해야하는데 IP 주소가 매우 부족하다. 보안상의 이유 - 인터넷에서 들어오는 패킷이 그대로 중계되는데 어플리케이션에 보안 구멍이 있다면 어플리케이션은 무방비 상태가 된다. 방화벽 보안 문제를 해결하기 위해서 방화벽을 두어 관문의 역할을 하도록 한다. (b) 특정 서버에서 동작하는 특정 어플리케이션에 액세스 하는 패킷만 통과시키고 나머지는 차단하도록 한다. 외부 액세스가 허가되지 않은 어플리케이션에 대한 패킷은 차단이 되므로 도착하지 않는다. 액세스가 허가된 어플리케이션에 보안구…

October 05, 2021
네트워크
성공과 실패를 결정하는 1%의 네트워크 원리_6

다음은 성공과 실패를 결정하는 1%의 네트워크 원리 를 읽고 정리한 내용입니다. 본 글은 CH3. 케이블의 앞은 LAN 기기였다_허브와 스위치, 라우터의 탐험입니다 🙌 🛺 [Story3] 라우터의 패킷 중계 동작 1. 라우터의 기본 라우터의 동작은 스위치 허브와 비슷하지만 IP와 이더넷의 차이로 인한 세부 동작의 차이점이 있다. 라우터는 크게 1) 중계 부분과 2) 포트 부분으로 나뉘어져 있다. 중계 부분은 다음 중계 대상을 판단하고 포트 부분은 송수신 동작을 담당한다. 라우터의 포트 부분은 이더넷이나 무선 LAN 외에도 ADSL, FTTH 등의 통신 기술을 지원한다. 라우터의 내부 구조 포트 부분에서 패킷을 수신하며 포트 부분의 통신 기술 규칙에 따라서 수신한다. (포트 부분의 하드웨어 부분이 패킷을 수신하는 것) 중계 부분에서 받은 패킷의 수신처 IP주소와 중계 대상을 동록한 표를 대조하여 중계 대상을 판단한다. 해당 포트로 옮기고 포트의 하드웨어에 따라서 패킷 송신 동작을 실…

October 03, 2021
네트워크
성공과 실패를 결정하는 1%의 네트워크 원리_5

다음은 성공과 실패를 결정하는 1%의 네트워크 원리 를 읽고 정리한 내용입니다. 본 글은 CH3. 케이블의 앞은 LAN 기기였다_허브와 스위치, 라우터의 탐험입니다 🙌 🛺 [Story1] 케이블과 리피터, 허브 속을 신호가 흘러간다 1. 패킷 하나하나가 독립적으로 동작한다 케이블로 흘러간 패킷은 중계 장치를 경유해서 목적지에 도착한다. 중계 장치는 데이터의 내용을 보지 않고 헤더에 적힌 정보만 보고 중계한다. 기본적인 흐름은 LAN 어댑터 → 리피터 허브 → 스위칭 허브 → 라우터를 경유해서 인터넷으로 나가는 것이다. 2. LAN 케이블은 신호를 약화시키지 않는 것이 핵심이다 LAN 어댑터의 PHY(MAU)회로에서 신호가 나가 케이블에 흘러 리피터 허브의 커넥터 부분에 도착한다. 이때 케이블을 이동하고 그 길이가 길어지면서 신호가 약해져서 변형된다. 3. 꼼은 잡음을 방지하기 위한 방법이다. 선을 꼬게 되면서 전자파에 의한 잡음을 상쇄한다. 4. 리피터 허브는 연결되어 있는 전체 …

October 01, 2021
네트워크
성공과 실패를 결정하는 1%의 네트워크 원리_4

다음은 성공과 실패를 결정하는 1%의 네트워크 원리 를 읽고 정리한 내용입니다. 본 글은 CH2. TCP/IP의 데이터를 전기 신호로 만들어 보낸다_프로토콜 스택과 LAN 어댑터의 탐험입니다 🙌 🛺 [Story4] 서버에서 연결을 끊어 소켓을 말소한다 1. 데이터 보내기를 완료하고 연결을 끊는다 소켓 연결 말소 시점은 한쪽이 데이터 보내기를 완료했을때다. 어느 측에서든 먼저 연결을 끊을 수 있도록 프로토콜이 설계 되어 있다. 주로 브라우저에서 요청을 보내고 서버에서 응답을 하면 서버 측에서 먼저 연결 끊기 동작을 실행한다. 메소드를 호출해서 연결끊기 동작에 들어간다. 연결끊기 동작 세부 로직 - 끊는 쪽 (예. 서버) 연결을 끊고자 하는 측이 TCP 헤더를 만들어서 FIN 컨트롤 비트를 1로 설정한다. 이 패킷을 IP 담당에게 요청하여 상대에게 송신한다. 자신의 소켓에 연결 끊기 동작에 들어갔다는 사실을 통지한다. 연결끊기 동작 세부 로직 - 상대 쪽 (예. 브라우저) 프로토콜 …

September 30, 2021
네트워크
성공과 실패를 결정하는 1%의 네트워크 원리_3

다음은 성공과 실패를 결정하는 1%의 네트워크 원리 를 읽고 정리한 내용입니다. 본 글은 CH2. TCP/IP의 데이터를 전기 신호로 만들어 보낸다_프로토콜 스택과 LAN 어댑터의 탐험입니다 🙌 🛺 [Story1] 소켓을 작성한다. 1. 프로토콜 스택의 내부 구성 네트워크를 제어하는 다음 두 가지가 필요하다. 소프트웨어 - (OS 내장) 프로토콜 스택 하드웨어 - LAN 어댑터 아래가 네트워크 계층 구조이다. 어플리케이션에서 데이터 송신을 시작한다. 이때 소켓 라이브러리를 사용하여 리졸버로 DNS 서버를 조회하는 등의 동작을 실행한다. OS 내부에 있는 프로토콜 스택이 그 다음 작업을 의뢰받는다. TCP 혹은 UDP로 데이터를 송수신한다. IP 프로토콜로 패킷 송수신 동작을 제어한다. ICMP(패킷운반시 오류 통지, 제어용 메세지) 혹은 ARP(IP에 대응하는 MAC주소 조사)로 동작한다. LAN 드라이버는 LAN 어댑터라는 하드웨어를 제어한다. LAN 어댑터라는 하드웨어가 실제 …

September 29, 2021
네트워크
성공과 실패를 결정하는 1%의 네트워크 원리_2

다음은 성공과 실패를 결정하는 1%의 네트워크 원리 를 읽고 정리한 내용입니다. 본 글은 CH1. 웹 브라우저가 메시지를 만든다 입니다 🙌 🛺 [Story3] 전 세계의 DNS 서버가 연대한다. DNS 서버의 기본 동작 DNS 서버는 조회 메세지를 받고 그것에 대해 응답을 한다. 조회 메세지 내용 이름: 서버나 메일 배송 목적지 (@뒤 호스트) ex. www.example.com 클래스: 이전에 필요했으나 요즘에는 항상 인터넷을 나타내는 클래스 ‘IN’으로 표기됨 타입: 다음마다 응답 형태가 바뀐다. A: 이름에 지원되는 IP 주소 MX: 메일 배송 목적지 DNS 서버에서 위 3가지가 일치하는 응답 정보를 찾아서 등록된 IP 주소 등을 회신한다. MX, 메일 서버에 대한 응답인 경우 메일 서버의 우선순위 + 메일 서버의 이름, 해당 메일 서버의 IP 주소를 함께 회신한다. DNS 서버에서 취급하는 타입은 여러개가 있다. PTR, NS, SOA, CNAME 등등 도메인의 계층 정말 …

September 27, 2021
네트워크
성공과 실패를 결정하는 1%의 네트워크 원리_1

다음은 성공과 실패를 결정하는 1%의 네트워크 원리 를 읽고 정리한 내용입니다. 본 글은 CH1. 웹 브라우저가 메시지를 만든다 입니다 🙌 💡 개요 HTTP 리퀘스트 메세지를 작성한다. URL을 해독하는 곳에서 브라우저의 동작이 시작된다. 이 URL의 의미에 따라서 요청 메세지를 작성하고 요청 내용을 만든다. 이때 HTTP 라는 프로토콜이 사용된다. 웹 서버의 IP 주소를 DNS 서버에 조회 OS에 의뢰해서 요청 메세지를 송신할 때 송신대상의 IP주소를 알아야한다. URL의 웹 도메인명으로 DNS 서버를 조회해서 IP 주소를 조사한다. 전세계 DNS 서버 연대 다수의 DNS 서버가 연대하여 IP 주소를 조사한다. 프로토콜 스택에 메시지 송신을 의뢰 OS에 메세지를 송신하는 동작을 의뢰한다. OS에서 제공하는 규칙에 따라서 의뢰를 해야한다. 해당 프로그램을 직접 구현하는 것이 아니더라도 규칙의 큰 흐름을 알는 것이 중요하다. 🛺 [STORY1] HTTP 리퀘스트 메세지를 작성한다 U…

September 24, 2021
네트워크