TCP/IP 모델
in Interview on woowaCourse
- OSI 모델 vs TCP/IP 모델
- 1계층 - Physical Layer
- 2계층 - Data Link Layer
- 3계층 - Network Layer
- 4계층 - Transport Layer
- 5계층 - Application Layer
- 계층 정리
- 전송 과정
OSI 모델 vs TCP/IP 모델
- 현대의 인터넷이 TCP/IP 모델을 따르고 있는 이유는 OSI 모델이 시장점유율에서 졌기 때문이다.
- OSI 모델의 Application, Presentation, Session 계층이 TCP/IP 모델에서는 Application으로 합쳐졌다고 보면 된다.
각 계층별로 상세히 알아보기 전에 간단히만 우선적으로 알아보자.
- Application Layer
- 응용 프로세스를 직접 사용하여 직접적인 응용 서비스를 수행하는 계층
- 말이 어렵지만, SMTP, HTTP, FTP, Talnet 과 같은 프로토콜이 속한 계층
- Presentation Layer
- 데이터의 변환, 데이터의 압축, 암호화가 이뤄지는 계층
- 서로 다른 통신 기기 간에 다른 인코딩을 사용할 수 있기 때문에 이 계층에서 데이터 변환이 이뤄짐
- Session Layer
- 세션을 열고 닫고를 제공하는 계층
- 세션 도커를 통해 체크포인트라는 것으로 동기화를 시켜 세션 복구도 지원
- 다운로드 중에 끊겼다가 다시 해당 부분부터 다운 가능한 것이 이것 때문
- Transport Layer
- 세그멘테이션, 흐름제어, 오류제어를 제공
- 세그멘티에션
- 상위 계층 데이터를 받아서 세그먼트 단위로 나누는 작업
- 흐름제어
- 데이터 전송량이 다른 기기에서 흐름을 제어하는데 사용
- 받는 쪽은 10Mbps를 받을 수 있는데 보내는 쪽에서 50Mbps로 보내면 전송량을 낮춰달라고 보내는 방식, 이 반대도 마찬가지
- 오류제어
- 보낸 데이터가 정확히 오류 손실이 없는지, 오류가 있다면 다시 보내주는 작업
- Network Layer
- IP, 라우터 방식가 속한 계층으로 데이터 전송을 담당
- 호스트에 IP 번호를 부여하고, 도착지까지 최적의 경로를 찾아줌
- Data Link Layer
- 네트워크 계층은 서로 다른 두 네트워크간의 전송을 담당한다면, 데이터 링크 계층은 동일한 네트워크 내에서 전송을 담당
- 오류제어
- 데이터 링크 계층의 데이터 단위를 Frame이라고 하는데 여기서 특정 프레임이 오류가 발생하면 그냥 버림
- Transport 계층에서는 버리지 않고 다시 보내주는 오류 복구까지 함
- Physical Layer
- 비트 단위신호들을 전기신호로 변환하는 역할
1계층 - Physical Layer
- 물리적으로(전선으로) 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해주는 모듈
- 송신 컴퓨터에서는 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려보낸다.(encoding)
- 수신 컴퓨터에서는 아날로그 신호가 들어오면 0과 1의 나열로 해석한다.(decoding)
- 1 계층 모듈은 PHY칩에 하드웨어적으로 구현되어있다.
2계층 - Data Link Layer
- 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고 받기 위해서 필요한 모듈
- Framing은 데이터 링크 레이어에 속하는 작업들 중 하나로 데이터를 보내기 전에 구분자들을 붙여서 보내는 작업
- 랜카드에 하드웨어적으로 구현되어있다.
동작 과정
- 송신 컴퓨터의 2계층 encoder에 데이터가 인풋으로 들어가 Framing을 통해 구분자가 붙은 데이터가 아웃풋으로 나온다.
- 아웃풋은 1계층 encoder에 인풋으로 들어가 아날로그 신호로 변조되어 아웃풋으로 나온다.
- 수신 컴퓨터는 아날로그 신호를 1계층 디코더의 인풋으로 받아 해석한 신호의 데이터를 아웃풋으로 보낸다.
- 해석된 데이터는 2계층 디코더의 인풋으로 들어가 data라는 데이터가 아웃풋으로 나온다.
3계층 - Network Layer
- 수많은 네트워크들의 연결로 이루어지는 inter-network 속에서 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해, IP 주소를 이용해 길을 찾고(routing) 자신 다음의 라우터에게 데이터를 넘겨주는 (forwarding) 모듈
- 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
- 데이터가 3계층 인코더 인풋으로 들어가 IP주소가 붙어서 아웃풋으로 나온다.(객체의 새로운 필드에 주소를 담는 형식)
- 2계층 인코더의 인풋으로 들어가 구분자가 붙어 아웃풋으로 나온다.
- 1계층 인코더의 인풋으로 들어가 아날로그 신호로 바뀌어 아웃풋으로 나온다.
- 1계층 디코더에서 인풋으로 아날로그 신호를 받아 해석한 데이터가 아웃풋으로 나온다.
- 2계층 디코더의 인풋으로 들어가 구분자를 제거한 데이터가 아웃풋으로 나온다.
- 3계층 디코더의 인풋으로 들어가 IP주소가 제거된 데이터가 아웃풋으로 나온다.
- 3계층에서는 이 IP 주소를 가지고 어디로 보낼지 길을 찾고 다음 라우터에게 넘겨주는 역할을 하는 것이다.
- IP주소를 통해 어디로 보내야할지 정했다면 데이터를 다시 보내기 위한 작업을 해야한다.
- 데이터를 3계층 인코더의 인풋으로 넣고 IP 주소가 붙은 아웃풋이 나온다.
- 2계층 인코더의 인풋으로 들어가 구분자가 붙은 아웃풋이 나온다.
- 1계층 인코더의 인풋으로 들어가 아날로그 신호로 변조되어 다른 라우터로 보낸다.
4계층 - Transport Layer
- 포트 번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 도돨하게 하는 모듈
- 포트 번호는 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스(실행 중인 프로그램)들이 서로 겹치지 않게 가져야하는 정수 값
- 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다.
- 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
- 데이터가 4계층 인코더에 인풋으로 들어가 포트 번호가 붙어서 아웃풋으로 나온다.
- 3계층 인코더에 인풋으로 들어가 ip주소가 붙어서 아웃풋으로 나온다.
- 2계층 인코더에 인풋으로 들어가 구분자가 붙어서 아웃풋으로 나온다.
- 1계층 인코더에 인풋으로 들어가 아날로그 신호로 변조되어 아웃풋으로 나온다.
- 1계층 디코더에 인풋으로 들어가 아날로그 신호를 해석한 데이터가 아웃풋으로 나온다.
- 2계층 디코더에 인풋으로 들어가 구분자가 제거된 데이터가 아웃풋으로 나온다.
- 3계층 디코더에 인풋으로 들어가 ip주소를 제거한 데이터가 아웃풋으로 나온다.
- 4계층 디코어에 인풋으로 들어가 포트번호를 제거한 데이터가 아웃풋으로 나온다.
5계층 - Application Layer
- 대표적으로 Application Layer의 프로토콜로 HTTP가 있다.
- TCP/IP 소켓 프로그래밍(네트워크 프로그래밍) : 운영체제의 Transport Layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것
- TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer의 인코더와 디코더를 만들어, 즉, 자신만의 Application Layer 프로토콜을 만들어 사용할 수 있다.
대표적인 Application Layer HTTP프로토콜 방식
- 데이터가 5계층 HTTP 인코더에 인풋으로 들어가서 Status Code, Header 등등 여러가지가 붙어서 아웃풋이 나온다.
- 4계층 인코더의 인풋으로 들어가 포트번호가 붙어서 아웃풋으로 나온다.
- 이전과 마찬가지로 계층을 통과해 아날로그 신호로 변조되어 나온다.
- 수신측 컴퓨터에서 아날로그 신호를 받아 디코더를 통해 쭉 4계층까지 올라가 HTTP 정보와 데이터가 아웃풋으로 나온다.
- 5계층 HTTP 디코더에 인풋으로 들어가 데이터가 아웃풋으로 나온다.
계층 정리
- Application Layer : HTTPS 프로토콜을 사용하여 데이터를 감싸고 Transport Layer로 내린다.
- Transport Layer : TCP인지 UDP인지에 대한 정보, 출발지와 도착지에 대한 포트정보를 헤더에 넣고 캡슐화한다. 이 결과물을 세그먼트 라고 한다.
- Network Layer : 출발지와 도착지에 대한 IP정보를 헤더로 만들어 붙인다. 이 결과물을 패킷 이라고 한다.
- Data Link Layer : 출발지의 Mac 주소와 가장 가까운 라우터의 맥주소를 붙인다. 이 결과물을 Frame 이라고 한다.
- 도착지에 대한 맥주소를 넣지 않는 이유는 출발지는 처음에 도착지에 대한 맥주소를 알지 못한다.
- DHCP와 ARP()를 통해서 라우터의 IP를 받고 맥주소로 변환한 후에 헤더에 넣는다.
- 앞쪽에 Trailer가 붙게 되는데 이건 오류제어를 위한 정보가 담긴다.
- Physical Layer : 전기신호로 변환하여 전송한다.
전송 과정
- A에서 스위치로 데이터를 보낸다.
- 스위치는 데이터링크 계층의 대표적인 하드웨어
- 스위치는 decapsulation를 한번해서 헤더에 대한 정보를 확인하고 해당 주소(라우터)로 데이터를 보냅니다.
- 라우터 decapsulation 두 번 해서 도착지에 대한 IP주소를 확인하고 라우팅 테이블을 통해 라우팅 시킨 후 B의 맥주소를 파악하여 Layer2에 대한 헤더를 업데이트 한다.(B에 대한 맥주소로 업데이트 시킨다.)
- 라우터는 네트워크 계층의 하드웨어
- 라우터에서 스위치로 보내고 스위치는 B로 보내게 된다.
[[10분 테코톡] 🔮 히히의 OSI 7 Layer]
[[10분 테코톡] 👍 파즈의 OSI 7 Layer]
[10분 테코톡] 🔮 수리의 TCP/IP]