본문 바로가기

CS/Network

(9)
TCP/IP 네트워크 스택 이해하기 TCP/IP의 중요한 성질Connection oriented먼저 두 개의 엔드포인트(local, remote) 사이에 연결을 맺은 후 데이터를 주고받는다. 이때 TCP 연결 식별자는 형태이다. Bidirectional byte stream양방향 데이터 통신을 하고, 바이트 스트림을 사용한다. 이 바이트 스트림은 여러 패킷으로 분할되어 전송되지만, 수신측의 TCP에서 이러한 패킷을 일련의 바이트 스트림으로 재조립하여 응용 계층에서 처리할 수 있게 한다. In-order delivery송신자가 보낸 순서대로 수신자가 데이터를 받는다. 이를 위해서는 데이터 순서가 필요한데 순서를 표시하기 위해 TCP 세그먼트 필드에 32비트의 sequence number 필드가 있다. Reliability through A..
링크 계층 링크 계층링크 계층은 네트워크 계층의 한 단계 아래 계층으로, 링크 계층의 전송 단위는 프레임이다. 링크 계층을 이해함으로써 패킷이 라우터로 이동하는 그 과정을 좀 더 구체화시켜 이해할 수 있을 것이다.이더넷(Ethernet)이더넷은 링크 계층에서 같은 네트워크 간에 통신을 할 때 사용되는 프로토콜로, 컴퓨터, 서버, 라우터, 스위치 등의 네트워크 장치들을 연결하여 데이터를 전송하고 네트워크를 구성한다.  따라서 이더넷을 사용하여 연결된 장치들은 같은 네트워크 내에 속해야 한다(LAN(Local Area Network)). LAN에서 이더넷을 사용하면 데이터는 주로 이더넷 스위치나 허브를 통해 전송된다.이더넷 프레임Destination Address: 도착지 MAC 주소Source Address: 출발지..
네트워크 계층: IP 네트워크 계층, IP 프로토콜네트워크 계층의 대표적인 프로토콜은 IP(Internet Protocol)이고, 전송 단위는 패킷이다.  패킷의 데이터 부분에 전송 계층의 세그먼트가 담기게 된다. 즉 패킷의 구성은 "IP 헤더(20바이트) + TCP 헤더(20바이트) + 애플리케이션 메시지"라고 할 수 있다. 즉, IP 패킷의 최소 크기는 애플리케이션 메시지를 제외한 40바이트이다. 실제로 네트워크 상에 돌아다니는 IP 패킷을 보면 40바이트 크기의 패킷을 발견할 수 있는데, 그 예로 데이터를 잘 받았다는 피드백의 ACK 용도인 패킷이 있다. IP 프로토콜의 특징은 다음과 같다.상위 계층에서 전송받은 데이터에 헤더를 붙여 패킷을 만든다.비연결형 프로토콜로 패킷을 수신지까지 전송하지만 전송 완료를 보장하지는 ..
전송 계층: UDP, TCP 전송 계층전송 계층은 어플리케이션 계층 바로 아래에 위치하며, 좀 더 구체화된 개념이다. 전송 계층에서의 전송 단위는 세그먼트이며, 세그먼트는 데이터와 헤더 부분으로 나뉜다. 애플리케이션 계층으로부터 받은 메시지가 데이터 부분에 들어가고, 부가 정보가 헤더 부분에 들어간다. 전송 계층의 대표적인 프로토콜로 TCP와 UDP가 있다. UDPUDP는 비연결형 통신 방법으로, TCP와 달리 신뢰성을 보장하지 않는다. 이때 비연결형이라는 것은 다음 사진과 같이 소켓과 소켓 간의 일대일 매핑이 이뤄지지 않는 것은 말한다.즉, 송신지 소켓과 수신지 소켓이 연결되었는지 확인하지 않고 보낸다(connectionless). 그리고 TCP와 달리 전송된 세그먼트에 대한 ACK 응답을 받는 과정이 없다. 따라서 데이터가 제대..
소켓(Socket) 소켓(Socket)소켓은 네트워크에서 프로세스 간 통신을 가능하게 하는 연결부이다. 그리고 네트워크에 연결하기 위해 정해진 규약, 즉 프로토콜에 맞게 여러 종류의 소켓이 있다(TCP 소켓, UDP 소켓 등).  운영체제는 소켓 API를 제공한다. 소켓 API는 네트워크 통신을 처리하기 위해 운영체제에서 제공하는 표준화된 함수의 집합이다. 즉, 애플리케이션이 네트워크 통신을 할 때는 반드시 소켓 API를 사용하게 된다. 애플리케이션에서 socket(), bind() 등의 소켓 API를 호출하면 해당 함수들은 내부적으로 시스템 콜을 통해 운영체제 커널에서 처리된다.  소켓을 맥락에서 이해하면 다음과 같다.소켓은 네트워크 통신을 위한 인터페이스로, 애플리케이션 계층에서 TCP 프로토콜 스택에 접근하기 위해 추..
애플리케이션 계층: DNS DNS, 네임서버DNS는 Domain Name System의 약자로 도메인 이름과 IP 주소를 변환하는 역할을 하는 시스템이다. DNS가 필요한 이유는 무엇일까? 사용자가 복잡한 IP 주소를 기억하는 것은 어렵기 때문이다. 따라서 사용자가 도메인 이름을 입력하면, DNS를 통해 그에 해당하는 IP 주소를 알아오는 것이다.네임서버는 도메인 이름과 그에 상응하는 IP 주소 간의 매핑 정보를 저장하고 관리하는 서버이다. 계층 구조그런데 만약 DNS를 운영하는 네임서버가 1개라면? 모든 트래픽이 하나의 서버로 몰려 IP 주소 반환 과정이 느릴 것이고, 이 서버가 다운되면 전세계 사람들이 이용하지 못하게 될 것이다. 따라서 DNS를 운영하는 네임서버는 여러 개로 구성되고, 이 서버들은 계층적인 구조로 되어 있다...
애플리케이션 계층: HTTP HTTP(Hypertext Transfer Protocol) 전 세계의 웹브라우저, 서버, 웹 애플리케이션은 모두 HTTP(Hypertext Transfer Protocol)를 통해 서로 통신한다. HTTP는 전 세계의 웹 서버로부터 대량의 정보를 사람들의 PC에 설치된 웹브라우저로 옮겨준다. HTTP는 Hypertext Transfer Protocol의 약자이다. 이때 하이퍼텍스트란, 텍스트인데 링크들을 포함한 텍스트를 의미한다(ex, 이미지 참조 링크, 동영상 참조 링크). 따라서 HTTP는 여러 링크들이 포함된 하이퍼텍스트를 전송하는 프로토콜이다. HTTP의 특징 TCP/IP 따라서 신뢰성 있는 데이터 전송이 보장된다. 클라이언트-서버 구조 클라이언트는 서버에게 필요한 데이터를 요청하고, 서버는 요..
PDU, SDU PDU PDU(Protocol Data Unit)는 동일 레이어 간에서 운반되는 데이터를 부르는 이름이다. OSI 7 계층에서 각 계층은 상위 계층으로부터 전달받은 데이터에 헤더 정보를 추가하는데, 이때 각 계층에서 부르는 데이터 단위의 이름이다. 4계층에서는 세그먼트, 3계층에서는 패킷, 2계층에서는 프레임이라고 부른다. 그리고 1계층에서는 2계층으로부터 전달받은 프레임을 비트로 다룬다. SDU SDU(Service Data Unit)는 상향/하향 레이어 간에 전달되는 정보를 말한다. 즉 PDU는 SDU와 헤더 정보인 PCI(Protocol Control Unit)로 이뤄진다. PDU = SDU + PCI Reference http://www.ktword.co.kr/test/view/view.php?m..