정리하고기록하자

TCP / IP 본문

개발 상식

TCP / IP

정리하고기록하자 2022. 6. 5. 00:52
반응형

TCP / IP

TCP / IP 란 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜의 집합이다.

TCP : 전송 제어 프로토콜 ( Transmission Control Protocol ) 이며 한 기기에서 다른 기기로 데이터를 전송하는 것을 담당하는 것.

IP : 인터넷 프로토콜 ( Internet Protocol ) 이며 이 프로토콜은 데이터의 조각을 최대한 빨리 대상 IP 주소로 보내는 역할을 한다.


TCP / IP 의 계층 

응용계층 ( Application Layer )

특정 서비스를 제공하기 위해 애플리케이션 끼리 정보를 주고 받을 수 있다.

사용자가 네트워크에 접근할 수 있도록 한다. 사용자 인터페이스를 제공 할 뿐만 아니라 이메일, 원격 파일 접근 및 전송, 공유 데이터베이스 관리등의 서비스를 제공 한다.

SMPT : 인터넷에서 전자우편을 보낼 때 이용하게 되는 표준 통신 규약 ( 메일 프로그램 )

HTTP : 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약 ( 인터넷 브라우저 )

FTP : 파일전송 규약 

DHCP : 동적 호스트 설정 통신 규약

SNMP : 간이망 관리 프로토콜

 

전송계층 ( Transport Layer ) 

송신된 데이터를 수신측 애플리케이션에 확실하게 전달한다.

전송을 담당하는 계층이다.

전송계층에는 TCP 뿐만 아니라 사용자 데이터그램 통신규약 ( *UDP ) 도 있다.

*UDP : TCP 보다 단순하며 다른 데이터에 비해 안전하게 보호되어야 할 필요가 없는 실시간 응용 프로그램에서 흔히 이용한다. UDP는 TCP 보다 신뢰도가 낮고 오류 검출, 흐름 제어 등의 기능을 제공하지 않아 패킷을 빠르게 전송하는 응용 계층에서 이용되고 있다.

 

인터넷 계층 ( Internet Layer )

수신 측 까지 데이터를 전달하기 위해 사용한다.

인터넷 계층은 네트워크 간 *데이터 패킷의 전송을 관리한다

*데이터 패킷 : 통신망을 통해 전송하기 쉽도록 자른 데이터의 전송 단위

 

네트워크 계층 ( Network Access Layer )

네트워크에 직접 연결된 기기 간 전송을 할 수 있도록 한다

데이터가 원하는 IP 주소에 도달할 뿐만 아니라 해당 네트워크 내의 연결된 기기에 연결되어 있는지 확인하는 역할이다. 데이터 링크 계층은 원하는 기기의 MAC 주소를 확인하고 이더넷 케이블 및 와이파이를 통한 데이터 전송을 관리하는 등의 작업을 담당한다


TCP / IP 의 흐름

1. 어느 웹 페이지를 보고 싶다는 HTTP 리퀘스트르 지시한다 ( 애플리케이션 계층 )

2. 애플리케이션 계층에서 받은 데이터를 통신하기 쉽게 조각내어 안내번호와 포트번호를 붙인다. ( 트랜스포트 계층 )

3. 수신지 MAC 주소를 추가해서 링크 계층에 전달한다. ( 네트워크 계층 )

4. 데이터를 받아들여 순서대로 위의 계층에 전달한다. ( 링크 계층 ) 

 

송신할 때는 각 계층을 거칠 때마다 헤더에 필요한 정보가 추가된다.

수신할 때는 해당 계층마다 사용한 헤더를 삭제한다.

이렇게 정보를 감싸는 것을 캡슐화라고 한다.

 

애플리케이션 계층 ( HTTP 데이터 ) 

ex ) 웹 브라우저에 "www.goole.com" 으로 HTTP Request 메시지를 보내는 것이다.

트랜스포트 계층 ( TCP 헤더 )

발신지 포트 주소 ( SP ) : 컴퓨터에서 만든 소켓의 포트번호 

목적지 포트 주소 ( DP ) : 80번 포트 웹 서버의 웰노운 포트 

ex ) 발신지 포트 주소 는 내 컴퓨터에서 만든 소켓의 포트 번호라서 당연히 내 컴퓨터는 알고 있을 것이다.

그리고 목적지 포트 주소 또한 80으로 우리는 알고 있다. 

인터넷 계층 ( IP 헤더 )

시작 IP 주소 ( Source Address )

목적지 IP 주소 ( Destination Address ) 

ex ) 나의 시작 IP 주소는 알고 있겠지만 목적지 IP 주소는 아직 모른다. 지금은 "www.google.com" 이라는 도메인 정보만 알고 있다. 그렇지만 DNS 프로토콜을 통해서 도메인 정보로 IP 주소를 알아 낼 수 있다.

DNS : 브라우저는 OS에게 도메인에 대한 ip 주소를 알고 싶다고 요청한다. 그러면 OS에서 DNS서버로 요청을 보내게 된다. DNS는 도메인이 담긴 쿼리를 도메인 서버로 보내게 된다. 그러면 도메인 서버가 IP 주소를 응답해준다.

 

링크계층 ( Ethernet 헤더 )

ex ) 마지막으로 Ethernet 프로토콜에 대한 헤더를 만들어야 하는데 아직 MAC 주소를 모른다. 여기서 MAC 주소는 구글 MAC 주소 대신 물리적으로 연결된 우리집 공유기의 MAC주소가 필요하다. 이 공유기를 통해 달른 네트워크와 연결이 가능 하기 때문에 '게이트웨이' 라고 부르기도 한다. 

우리는 이미 게이트웨이에 대한 정보를 알고 있다. 그럼 어떻게 IP 주솔로 MAC주소를 알 수 있을까

IP 주소로 MAC주솔를 알아내기 위해서 *ARP 프로토콜을 사용 한다.

ARP 프로토콜 : IP 주솔를 MAC주소로 바꾸어주는 주소해석 프로토콜 


3-Way-Handshaking

TCP는 연결지향형 프로토콜이다. 그래서 TCP 프로토콜은 데이터를 전송하기 전에 송신측과 수신측이 서로 연결되는 작업이 필요 하다. 이러한 작업을 3-Way-Handshaking 이라고 한다.

3-Way-Handshaking 을 수행하기 위해서는 TCP 헤더에 표시한 플래그들이 사용된다.

이러한 플래그들을 컨트롤 비트라고 부른다.

3-Way-Handshaking 은 SYN과 ACK 플래그가 사용된다.

  1. 클라이언트는 서버에게 접속을 요청하는 SYN 패킷을 보낸다.
  2. 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN 플래그가 설정된 패킷을 보낸다.
  3. 클라이언트는 서버에게 다시 ACK를 보낸다.

이렇게 연결이 이루어지고 데이터가 오가게 된다.


4-Way-Handshaking

 

HTTP의 요청과 응답 과정이 끝나면 연결을 종료해야 한다.

여기서도 TCP의 컨트롤 비트가 사용된다.

  1. 클라이언트가 서버로 연결을 종료 하겠다는 FIN 플래그를 전송한다
  2. 서버는 클라이언트에게 ACK 메시지를 보낸다. ( 자신의 통신이 끝날 때 까지 기다린다 ) 
  3. 서버가 통신이 끝나면 클라이언트로 FIN을 보낸다.
  4. 클라이언트는 확인했다는 의미로 서버에게 ACK를 보내면 연결이 종료 된다.

 

 

 

참고 :

 

TCP/IP란 무엇이며 어떤 원리로 작동하나요?

이 글을 읽고 TCP/IP 계층, 정의, TCP IP의 차이점, 데이터 보호 방법에 대해서 자세히 알아보세요.

nordvpn.com

 

 

[CS] 그림으로 알아보는 네트워크 - 계층화와 OSI, TCP/IP, UDP의 특징과 차이점

통신을 위해서는 바이너리 데이터를 주고받는 과정들이 필요하고, 이는 네트워크를 통해 진행됩니다. 네트워크는 어떻게 통신하고 계층화를 어떤 방법으로 적용하였는지에 대해 알아보고, 프

velog.io

 

 

웹과 네트워크의 기본(TCP/IP)

이 시리즈는 그림으로 배우는 Http&Network Basic을 읽고 정리한 내용입니다. 이번 포스팅에서는 HTTP를 이해하는데 알아야 할 TCP/IP 개념만 설명하겠습니다. 1. 네트워크의 기본은 TCP/IP 인터넷을 포함

velog.io

 

반응형

'개발 상식' 카테고리의 다른 글

쿠키, 세션, JWT  (0) 2022.06.19
네트워크 시스템의 Layer and Architecture  (0) 2022.06.11
Spring - PSA  (0) 2022.05.02
Spring - DI  (0) 2022.05.02
Spring - AOP  (0) 2022.04.30