tcp/ip
는 두개의 주요 프로토콜인 TCP(Transmission Control Protocol)
와 IP(Internet Protocol)
의 이름을 합쳐서 부른것이다.
인터넷을 포함한 다양한 컴퓨터 네트워크에서 데이터를 주고 받을 때 사용하며, 가장 널리 사용되는 인터넷 표준으로 알려져있다.
tcp/ip의 4계층 프로토콜
을 구현하는 소프트웨어만 있으면 다른 종류의 호스트와도 통신을 할 수 있다.
클라이언트가 서버에게 서비스를 요청하면 클라이언트가 송신측이 되는거고, 서버가 데이터를 수신하는쪽이 된다. 반면 서버가 서비스를 제공하면 송신하는 쪽이 되고, 이때는 클라이언트가 수신측이 된다.
tcp/ip는 4개의 계층이 존재하는데 아래위로 인접한 계층과 데이터를 주고 받으면서 통신을 진행한다. 응용계층부터 네트워크 인터페이스까지 순서 대로 데이터가 거쳐가며 데이터가 전송된다.
각계층마다 처리할 프로토콜이 존재한다. 각자 맡은 역할이 있다는 뜻이다. 상위 계층으로 부터 받은 데이터에 헤더라는 정보를 붙여 하위계층으로 넘기게 된다. 헤더는 수신호스트의 해당 계층에서 데이터를 처리할 때 필요한 정보가 담겨있다. 예를 들면 물리주소, ip주소, mac주소, 포트번호, 등이 이에 해당한다.
그림처럼 각 계층을 지날 때마다 앞에 붙는 정보를 헤더
라고 한다. 송신지 호스트에서 각 계층을 지날 때마다 해당 계층의 프로토콜(역할)을 수행하고 데이터에 해더를 추가하는것을 캡슐화
라고 한다.
수신자 호스트는 이 캡슐화한 데이터의 헤더 부분을 보고 데이터를 처리한다. 이를 통해 상대방과 동일한 프로토콜을 사용할 수 있는 것이다.
송신 호스트에서는 응용 → 전송 → 인터넷 → 네트워크 인터페이스 계층의 순서대로 데이터가 이동한다. 각 계층을 지날 때마다 헤더가 추가 된다. 한 계층을 지날 때마다 계속 캡슐화가 되는것이다. 최하위 계층(네트워크 인터페이스) 에서 이 디지털 데이터(캡슐화한 데이터)를 전기 신호로 변환해서 라우터 등 중간노드를 거쳐 수신호스트의 최하위 계층인 네트워크 인터페이스 계층으로 전달되게 된다.
송신 호스트의 각 계층에서 맡은 역할에 따라 프로토콜을 처리한다. 이 때 헤더 부분의 정보를 사용하게 된다. 프로토콜에 사용된 헤더는 다음계층으로 올라갈 때 제거 된다. 데이터가 하위 계층에서 상위 계층으로 올라갈 수록 헤더가 제거되므로 최종적으로 송신측에서 보낸 데이터만 남게 된다. 이처럼 각 계층을 지날 때마다 해당 계층의 프로토콜을 처리하고 데이터의 헤더가 제거되는것을 역캡슐화
라고한다.
전송 매체를 통해 전기 신호를 받은 수신 호스트의 네트워크 인터페이스 계층은 이 전기 신호를 디지털 데이터로 변환한다.
수신 호스트에서 데이터는 네트워크 인터페이스 → 인터넷 → 전송 → 응용 계층 순서대로 이동한다. 각 계층을 지날 때마다 송신호스트가 추가한 헤더
정보를 읽고 해당 프로토콜을 수행한다음 사용한 헤더를 제거한 데이터를 상위 계층으로 넘긴다. 최종적으로는 여러개의 헤더를 삭제하고 송신호스트가 보낸 원본 데이터를 응용계층에서 사용하게 된다.
캡슐화에는 독특한 특성이 있다. 그 것은 한계층에서 추가된 헤더를 다른 계층에 볼 수 없게 할 수 있는 은닉 효과
가 있다는 것이다. 다른 계층의 헤더를 볼 수 없기 때문에 헤더는 송신 호스트에서 추가된 헤더는 수신 호스트의 동일한 계층에서만 사용된다.
이렇게 되면 같은 계층끼리 직접 데이터를 주고 받은것 처럼 되는것이다.
같은 계층끼리 데이터를 사용하는 데이터를 구분해서 부르는 것을 PUD(Protocol Data Unit) 이라고 한다. 응용 계층에서는 메시지(Message)
, 전송 계층에서는 세그먼트(Segment)
, 인터넷 계층에서는 데이터그램(Datagram) 또는 패킷(Packet)
, 네트워크 인터페이스 계층에서는 프레임(Frame)
이라고 부른다.
각 계층마다 추가되는 헤더 정보는 다 다르지만 적어도 송신지와 수신지의 주소, 헤더에 이어지는 데이터의 종류를 알려주는 식별자 정보가 있습니다.
이더넷 헤더엔 MAC주소가, IP 헤더엔 IP 주소가, TCP 헤더엔 포트 번호라는 주소 정보가 포함되어있다. 응용 계층은 사용하는 프로토콜에 따라 다르지만 이메일의 메일 주소와 같은 주소가 사용되는 경우가 있다.
헤더에 이어지는 데이터의 종류를 알려주는 식별자는 상위층의 프로토콜의 종류를 알려주는 정보다. 이더넷 헤더에는 상위 계층의 프로토콜이 IP라는 정볼를, IP헤더에는 상위계층의 프로토콜이 TCP라는 정보를 , TCP 헤더에는 상위 계층이 애플리케이션이 사용하는 프로토콜에 대한 정보를 담고 있다.
ip는 인터넷 전송 과정을 tcp는 데이터를 순서에 맞게 왔는지 중복인지 데이터에 변화는 없었는지 확인한다. 이러한 과정을 캡슐화 역캡슐화를 통해 알아봤다. 각 계층이 무슨일을 하는지 정확히 알수 있었다.
개쩌는 참고 블로그
https://better-together.tistory.com/89?category=887984