개발 서적 완독하기 15

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

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

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

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

이펙티브 자바 - ITEM 42 익명 클래스보다는 람다를 사용하라

익명 클래스 JDK 1.1이 등장하면서 함수 객체를 만드는 주요 수단은 익명 클래스가 되었다. 아래코드는 문자열을 길이순으로 정렬하기 위한 비교 함수를 익명 클래스로 나타내었다. Collections.sort(words, new Comparator() { public int compare(String s1, String s2) { return Integer.compare(s1.length(), s2.length()); } }); 람다식의 등장 자바 8에 와서는 함수형 인터페이스를 람다식을 사용해 만들 수 있게 되었다. 람다는 함수나 익명 클래스와 개념은 비슷하지만 코드는 훨씬 간결하다. 아래 예제는 앞의 코드를 람다식으로 바꾼 코드이다. Collections.sort(words, (s1, s2) -> I..

성공과 실패를 결정하는 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