개발 서적 완독하기/성공과실패를결정하는1%네트워크 7

성공과 실패를 결정하는 1% 네트워크 - 서버의 수신 동작

1. LAN 어댑터에서 수신 신호를 디지털 데이터로 변환한다. 수신 동작은 패킷의 신호를 LAN 어댑터에서 수신하고 디지털 데이터로 바꾸는 부분에서 시작된다. LAN을 흐르는 패킷의 신호는 1과 0으로 이루어진 디지털 데이터의 신호와 타이밍을 나타내는 클록 신호를 합성한 것이다. 여기에서 클록 신호를 추출하고 클록 신호에서 타이밍을 계산하면서 신호를 읽어오면, 1과 0의 디지털 데이터로 바꿀 수 있다. 신호에서 디지털 데이터로 되돌린 패킷은 아래와 같다. LAN 어댑터 담당 프리앰블/스타트 프레임 딜리미터 FCS IP가 담당 MAC 헤더 IP 헤더 TCP가 담당 TCP 헤더 데이터 이부분을 만드는 것이 애플리케이션의 담당 LAN 어댑터의 MAC 부분이 패킷을 신호로부터 디지털 데이터로 되돌리고 FCS을 ..

성공과 실패를 결정하는 1% 네트워크 - 서버의 개요

1. 클라이언트와 서버의 차이점 접속동작을 할때 클라는 보내는쪽이고, 서버는 기다리는 쪽이라, Socket 라이브러리의 활용법이 달라진다. 또한, 서버는 동시에 다수의 클라이언트 PC와 통신한다는 차이도 있다. 그러므로 서버와 클라이언트는 구조가 다르다. 2. 서버 애플리케이션의 구조 서버는 여러 클라이언트와 통신해야 함으로 대화의 진행이 어디까지인지 알아야한다. 그래서 클라가 새로 접속할 때 마다 새로 서버 프로그램을 작동하여 서버 애플리케이션이 클라와 1대 1로 대화하는 방법을 선택하는 것이 일반적이다. 서버 OS는 멀티태스크, 멀티스레드 라는 기능에 의해 다수의 프로그램을 동시에 함께 작동할 수 있는데 이를 활용하여 접속을 기다리는 부분과 클라이언트가 대화하는 부분을 나눈다. 만약 접속을 접수하면 ..

성공과 실패를 결정하는 1% 네트워크 - UDP 프로토콜을 이용한 송 수신 동작

수정 송신이 필요없는 데이터의 송신은 UDP가 효율적이다. TCP가 복잡한 원리를 사용할 이유는 데이터를 확실하면서도 효율적으로 전달하기 위함이다. 데이터를 확실히 전달하려면 도착한 것을 확인하고, 도착하지 않았으면 다시 보내야한다. 위 내용을 가장 간단히 실현할 수 있는 방법은 그냥 데이터를 ‘전부’ 보낸 후에 수신측에서 수신 확인 응답을 받는 것이다. 이는 TCP 처럼 복잡한 과정을 생략하는 것이다. 그러나, 패킷이 한개만 없어져도 전체를 다시 보내야 함으로 비효율적인데, 용도에 맞게 TCP와 UDP를 사용하면 된다. 제어용 짧은 데이터 예를들어 DNS 서버에 대한 조회는 한개의 패킷으로 끝나기 때문에 UDP를 사용한다. UDP 동작방식도 간단하다. 애플리케이션에서 송신 데이터를 받으면 UDP 헤더를..

성공과 실패를 결정하는 1% 네트워크 - IP와 이더넷의 패킷 송 수신 동작

1. 패킷의 기본 패킷은 헤더와 데이터로 구성되어 있고, 헤더에는 제어정보, 데이터에는 내용이 들어있다. 먼저 송신처가 되는 기기가 패킷을 만들면 패킷의 제어정보에 따라 가까운 중계 장치로 이동한다. 중계장치에 도착하면 중계 장치 안의 목적지 테이블을 활용하여 다른 가까운 중계 장치로 이동하는 방식이다. 최종적으로 수신처의 기기에 패킷이 도착하는 것이다. 이러한 중계기기들을 엔드노드 또는 중계노드라 한다. TCP/IP 패킷 구조는 더 발전한 형태로, 서브넷이 라우터와허브라는 두 종류의 패킷 중계 장치에서 다음과 같은 역할은 분담한다. 라우터가 목적지를 확인하여 다음 라우터를 나타낸다.(라우터는 IP 규칙에 따라 패킷 운반) IP가 목적지를 확인하여 다음 IP의 중계장치를 나타낸다. 허브가 서브넷 안에서 ..

성공과 실패를 결정하는 1% 네트워크 - 서버에 접속한다.

Story 02 서버에 접속한다. 1. 접속의 의미 클라이언트에서 소켓을 만든 직후에는 아직 아무것도 기록되어 있지 않으므로 통신에 대한 아무런 정보가 없다. 서버(목적지)의 IP주소나 포트 번호를 프로토콜 스택에 알리는 동작이 필요한데, 이것이 접속 동작의 한 가지 역할이다. 클라이언트와는 다르게 서버측은 목적지가 없기 때문에 IP주소나 포트 번호에 대한 정보를 알 수 없다. 그래서 클라이언트에서 자신의 IP 주소,포트 번호를 전달하면 서버측의 프로토콜 스택도 이에 대한 정보를 알 수 있다. 접속동작의 첫 번째 동작은 통신 상대와의 사이에 제어 정보를 주고받아 각자의 소켓에 필요한 정보를 기록하여, 데이터 송 수신 가능한 상태로 만든다. 여기서 제어 정보는 데이터 송 수신 동작을 제어하기 위한 정보이며..

성공과 실패를 결정하는 1% 네트워크 - 소켓을 작성하다.

Story 01 소켓을 작성한다. 1. 프로토콜 스택의 내부 구성 프로토콜 스택에는 TCP와 UDP라는 데이터 송 수신을 담당하는 프로토콜이 있다. 애플리케이션에서 보낸 의뢰를 받아 송수신 동작을 실행한다. 브라우저나 메일 등의 일반적인 애플리케이션이 데이터를 송 수신할 경우에는 TCP DNS 서버에 대한 조회 등에서 짧은 제어용 데이터를 송 수신할 경우에는 UDP 그 아래에는 IP 프로토콜을 사용하여 패킷 송 수신 동작을 제어하는 부분이 있다. 인터넷에서 데이터를 운반할 때는 데이터를 작게 나누어 패킷이라는 형태로 운반하는데 이 패킷을 통신 상대까지 운반하는 것이 IP의 주 역할이다. IP 안에는 ICMP와 ARP라는 프로토콜을 다루는 부분이 포함되어 있다. ICMP : 패킷을 운반할 때 발생하는 오류..

성공과 실패를 결정하는 1% 네트워크 - IP 주소를 DNS 서버에 조회한다.

Story 02 IP 주소를 DNS서버에 조회한다. 1. IP 주소의 기본 인터넷은 TCP/IP의 개념에 기초하여 만들어졌다. TCP/IP는 서브넷이라는 작은 네트워크를 라우터로 접속하여 전체 네트워크가 구성되어진다. 서브넷이란, 허브에 여러 대의 PC가 접속한 상태라고 생각한다. 여기에 ‘동번지’ 라는 형태로 네트워크 주소를 할당한다. 좀 더 큰 범위인 ‘동’에 해당하는 번호는 서브넷에 할당(네트워크 번호), ‘번지’에 해당하는 번호는 컴퓨터에(호스트 번호) 할당한다. 네트워크 번호와 호스트 번호를 합쳐서 IP주소라 한다. 액세스 대상의 서버까지 메시지를 운반할 때는 이 IP주소에 따라 액세스 대상의 위치를 파악하고 운반한다. 만약 메시지를 보내면 서브넷 안에 있는 허브가 운반하고 보낸 측에서 가장 가..

728x90