본문 바로가기

Dev.Basic/네트워크

(11)
[TCP] 3-way-handshake & 4-way-handshake [TCP] 3-way-handshake & 4-way-handshake 연결 성립(Connection Establishment) 1) 클라이언트는 서버에 접속을 요청하는 SYN(a) 패킷을 보낸다. 2) 서버는 클라이언트의 요청인 SYN(a)을 받고 클라이언트에게 요청을 수락한다는 ACK(a+1)와 SYN(b)이 설정된 패킷을 발송한다. 3) 클라이언트는 서버의 수락 응답인 ACK(a+1)와 SYN(b) 패킷을 받고 ACK(b+1)를 서버로 보내면 연결이 성립(establish)된다. 연결 해제(Connection Termination) 1) 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다.2) 서버는 클라이언트의 요청(FIN)을 받고 알겠다는 확인 메세지로 ACK를 보낸다. 2-1) 그리고나서는..
#Transport Layer, TCP vs UDP #Transport Layer, TCP vs UDP인터넷은 트랜스포츠 계층에 연결형 프로토콜과 비연결형 프로토콜, 이렇게 두 개의 주된 프로토콜을 갖는다. UDP UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)는 비연결형 프로토콜이다. IP 데이터그램을 캡슐화하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공한다. UDP는 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않는다. 이 모두가 사용자 프로세스의 몫이다. UDP가 행하는 것은 포트들을 사용하여 IP 프로토콜에 인터페이스를 제공하는 것이다. UDP가 특별히 유용한 분야는 클라이언트-서버 상황이다. 종종 클라이언트는 서버로 짧은 요청을 보내고, 짧은 응답을 기대한다. 만약 요청 또는 ..
[3장] 1. 복수 서버에 리퀘스트를 분배한 서버의 부하 분산 3장 첫번째, 복수 서버에 리퀘스트를 분배한 서버의 부하 분산 1. 처리 능력이 부족하면 복수 서버로 부하 분산된다. 클라이언트로 부터 서버에 액세스가 증가할 때,유입되는 대량의 패킷을 서버의 처리 능력이 따라잡지 못할 수 있다. 이럴 경우에는 복수의 서버를 사용하여 서버 한 대당 처리량을 줄여야 하는데, 이러한 방법을 분산 처리라고 한다.그 중 가장 간단한 방법은 단순히 여러 대의 웹 서버를 설치하고 한 대가 담당하는 사용자 수를 줄이는 방법이 있다. 그러기 위해서는 클라이언트가 보내는 리퀘스트를 웹 서버에 분배하는 구조가 필요하다. DNS 서버에 적용되고 있는 분배하는 방법이 가장 간단하다. 서버에 액세스 할 때 DNS 서버에 조회하여 IP 주소를 조사하는데 이 때, DNS 서버에 같은 이름으로 여러..
[2장] 3. IP와 이더넷의 패킷 송 수신 동작 이 포스팅은 '성공과 실패를 결정하는 1%의 네트워크 원리' 책을 기반으로 작성되었습니다.2장 세번째, IP와 이더넷의 패킷 송 수신 동작 1. 패킷의 기본 IP 담당 부분이 어떻게 패킷을 상대에게 송신하는가? 패킷은 헤더와 데이터 두 부분으로 구성된다. 헤더에는 수신처 주소 등의 제어 정보가 들어있고 데이터 부분에는 그 자체로 데이터가 담긴다. 먼저 패킷의 송신처가 되는 기기가 패킷을 만든다. 그리고 가장 가까운 중계장치에 송신한다. 중계 장치는 도착한 패킷의 헤더를 조사하여 다음 목적지를 판단한다. 이 때 어느 수신처가 어느 방향에 있는지에 대한 정보를 기록한 표 같은 것을 사용한다. 헤더에 기록된 내용과 표에 등록된 내용을 결합하여 목적지를 판단하는 것이다. TCP/IP 패킷 구조는 이 기본에서 발..
[2장] 2. 데이터를 송 수신하는 과정 이 포스팅은 '성공과 실패를 결정하는 1%의 네트워크 원리' 책을 기반으로 작성되었습니다.2장 두번째, 데이터를 송 수신 한다. 1. 프로토콜 스택에 HTTP 리퀘스트 메시지를 넘긴다. 접속 동작을 마치게 되면 데이터 송 수신 동작에 들어간다.이 동작은 애플리케이션이 write를 호출하여 송신 데이터를 프로토콜 스택에 건네주는 곳부터 시작된다. 프로토콜 스택은 데이터롤 곧바로 송신하는 것이 아니라 내부이 있는 송신용 버퍼 메모리 영역에 저장을 해둔다. 그 이유는 송신 의뢰가 올 때마다 데이터를 송신하게 되면 네트워크 효율이 떨어지기 때문이다.그렇다면 어떤 기준으로 데이터를 저장하는가? 프로토콜 스택은 MTU라는 매개변수를 바탕으로 판단한다. MTU란 한 패킷으로 운반할 수 있는 디지털 데이터의 최대 길이..
[2장] 1. TCP/IP - 소켓을 작성하고 서버에 접속한다. 이 포스팅은 '성공과 실패를 결정하는 1%의 네트워크 원리' 책을 기반으로 작성되었습니다.2장. TCP/IP Outline1. 소켓을 작성하고 서버에 접속한다. 2. 데이터를 송수신 한다. 3. 서버에서 연결을 끊어 소켓을 말소한다. 4. IP와 이더넷의 패킷 송수신 동작 5. UDP 프로토콜을 이용한 송수신 동작 2장 첫번째. 소켓을 작성하고 서버에 접속한다. 1. 프로토콜 스택의 내부구성 프로토콜 스택 내부는 데이터 송수신을 담당하는 TCP, UDP와 패킷 송 수신 동작을 제어하는 IP로 나누어져 있다. 브라우저나 메일 등의 일반적인 애플리케이션이 데이터를 송수신 할 경우 TCP 프로토콜을 사용하며 DNS 서버에 대한 조회 등 짧은 제어용 데이터를 송수신 할 경우에는 UDP 프로토콜을 사용한다. IP..
[1장] 4. 프로토콜 스택에 메시지 송신을 의뢰한다. 이 포스팅은 '성공과 실패를 결정하는 1%의 네트워크 원리' 책을 기반으로 작성되었습니다.1장 네번째. 프로토콜 스택에 메시지 송신을 의뢰한다. 데이터 송 수신 동작의 개요이제 드디어 IP 주소를 알아냈다. 이제 이 IP 주소와 HTTP Request 메시지를 프로토콜 스택에 전달하여 메시지 송신을 의뢰해야 한다. 이 때도 Socket 라이브러리를 이용한다. 단, 의뢰를 할 때는 Socket 라이브러리 프로그램 부품을 결정된 순번대로 호출해야 한다. 데이터를 송수신은 기본적으로 '데이터 통로'를 통해 수행된다. 클라이언트와 서버 사이에 파이프 같은 것이 존재하여 파이프를 통해 데이터를 주고 받는 것이다. 송수신 동작을 하기 전에 송수신하는 양자 사이를 파이프로 연결해줘야 한다. 연결해줄 때의 요점은 소켓..
[1장] 3. 전 세계의 DNS 서버가 연대한다 이 포스팅은 '성공과 실패를 결정하는 1%의 네트워크 원리' 책을 기반으로 작성되었습니다.1장 세번째. 전 세계의 DNS 서버가 연대한다 1. DNS 서버의 기본 동작리졸버로부터 DNS서버가 받는 조회 메시지에는 다음과 같은 내용이 포함되어 있다. 이름 : 서버 or 메일 배송 목적지와 같은 이름 클래스 : 초창기 때는 인터넷 이외에도 네트워크를 이용하는 경우가 많았다. 따라서 이들을 구분해주기 위해 클래스라는 것을 이용했다. 그러나 지금은 인터넷 이외의 네트워크는 소멸되었으므로 클래스는 항상 인터넷을 나타내는 ‘IN’이라는 값이 된다. 타입 : 타입에 따라 클라이언트에 회답하는 정보의 내용이 달라진다. IP주소를 조회할 때는 A라는 타입(Address)을 이용하며, 메일 배송 목적지를 조회할 때는 MX..