📌 TCP/IP란?
- 컴퓨터가 서로 통신하는 경우, 특정 규칙이나 프로토콜을 사용하여 순서대로 데이터를 전송 및 수신할 수 있다.
TCP/IP는 하나의 프로토콜이 아니라, TCP와 IP를 합쳐서 부르는 말이다.
( IP 주소 체계를 따르고, TCP의 특성을 활용해 송신자와 수신자의 논리적 연결을 생성하고, 신뢰성을 유지할 수 있도록 하겠다는 것을 의미)
- TCP는 패킷을 추적 및 관리하고 IP는 데이터를 배달한다.
◾ 관련 용어
용어 | 설명 |
클라이언트 | 자원들을 액세스하는 컴퓨터 또는 프로세스 |
호스트 | 인터넷 네트워크에 접속되고 다른 인터넷 호스트와 통신할 수 있는 컴퓨터 인터넷 네트워크에서 호스트는 인터넷 이름과 주소로 식별 |
네트워크 | 둘 이상의 호스트 및 이들 사이의 연결 링크 조합 |
패킷 | 호스트와 네트워크 사이의 한 트랜잭션에 대한 제어 정보 및 데이터 블록 인터넷 네트워크를 통해 데이터를 송수신하는 프로세스에 의해 사용되는 교환 미디어 |
포트 | 프로세스에 대한 논리적 연결 지점. 데이터는 포트(또는 소켓)을 통해 프로세스 사이에서 전송 |
프로세스 | 실행중인 프로그램 |
프로토콜 | 물리적 또는 논리적 레벨로 통신을 처리하는 규칙 ex. 연결 레벨 프로토콜 : 전송 레벨 프로토콜을 사용해 두 호스트 사이의 연결을 유지하는 패킷을 전송 |
서버 | 네트워크상의 다른 컴퓨터나 프로세스가 액세스할 수 있는 데이터, 서비스 등을 제공하는 컴퓨터 또는 프로세스 |
📌 TCP (Transmission Control Protocol)
◾ TCP 란?
- 서버와 클라이언트 간에 데이터를 신뢰성있게 전달하기 위해 만들어진 프로토콜
두 호스트가 교환하는 데이터와 승인 메세지의 형식을 정의하여 서버와 클라이언트간의 데이터를 신회성있게 전달하기 위해 만들어진 규약.
- 데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜
- 데이터는 어떤 선로를 이용하느냐에 따라 데이터가 전달되는 과정에서 손실되거나 순서가 바뀔 수 있는데, TCP는 데이터 패킷에 일련번호를 부여함으로써, 데이터의 손실을 찾아내 교정하고 순서를 재조합할 수 있도록 해 준다.
- IP의 한계인 비연결성, 비신뢰성을 해결
◾ TCP의 특징
1) 연결지향
- 서비스 연결이 성공해야 통신이 가능하다.
- 연결의 설정 ( 3-way handshaking )
( 가상 연결 후 메세지를 보낸다.
클라이언트 접속 요청(SYN)을 받으면 서버는 클라이언트에 요청 수락 메세지(ACK)와 접속 요청(SYN) 회신
응답받은 클라이언트 역시 수락 메세지(ACK)를 보내면 성공적으로 연결)
- 연결의 해제 ( 4-way handshake )
( 연결의 해제는 서버와 클라이언트 간 구분없이 먼저 서버를 끊는 쪽에서 FIN 신호를 보낸다.
A가 B에게 연결을 종료하겠다는 FIN FLAG를 전송한다.
B가 A에게 종료수락 메세지를 잘 받았다는 의미로 ACK 를 전송하고 데이터 통신이 끝날 때 까지 기다린다. (일시적으로 TIME_WAIT상태)
B가 통신이 끝났으면 연결이 종료되었다고 A에게 FIN FLAG를 전송한다.
A가 C에게 응답을 받았다는 의미로 확인메세지 ACK를 전송한다.
이때, A는 패킷 유실이나 Routing 지연으로 인해 FIN 패킷보다 늦게 도착하는 상황을 방지하기위해 FIN 플래그를 받게되더라도 일정시간동안 세션을 남겨두고 잉여패킷을 기다린다. (일정 시간동안 TIME_WAIT)
** Routing 지연 : 네트워크 통신의 지연. 네트워크를 통해 데이터를 전송하는 데 걸리는 시간을 말한다.
2) byte stream service
- 데이터의 경계를 구분하지 않는다.
( 데이터의 경계가 없는 경우 데이터가 여러번에 걸쳐 보내지더라도, 받는사람은 데이터가 n개가 쌓이면 한번에 받아간다.
그래서 바이트를 잘 모아 Packet으로 만드는 과정이 필요하다.
네트워크 트래픽에 따라 버퍼에 한번에 올 수도, 나눠서 올 수도 있다.
반대로 데이터의 경계가 있는 경우 보내는 쪽에서 10바이트를 보내는 경우 받는 쪽에서도 10바이트를 받는다.
예를들어 TCP 가 10바이트씩 3번 연속 보내면 버퍼가 한번에 30바이트를 받을 수도 있지만 무조건 10바이트씩 3번 받는 것.)
3) 신뢰성
- 데이터의 순서유지를 위해 각 바이트마다 번호 부여
- Sequence Number : TCP 세그먼트의 연속된 데이터 번호를 부여하여 데이터 전송 순서를 보장
- Ack Number : 상대방으로부터 받아야하는 다음 TCP 세그먼트 데이터 번호
- 데이터 전송 실패 시 클라이언트에서 이를 확인 할 수 있다.
4) 데이터 흐름 제어 및 혼잡제어
- 수신자의 버퍼 오버플로우 방지
- 패킷 수가 과도하게 증가하는 현상 방지
5) 전이중(Full-Duplex), 점대점(Point to Point) 서비스
◾ TCP의 단점
- 데이터로 보내기 전에 반드시 연결이 되어야 한다.
- 1:1 통신만 가능하다
- 고정된 통신 선로가 최단선이 아닌 경우 상대적으로 UDP보다 데이터 전송 속도가 느리다.
📌 IP ( Internet Protocol )
- 인터넷을 통해 데이터를 주고 받을 때 사용되는 통신 규약.
- 데이터를 패킷 단위로 나누어 전송하고 받는 쪽에서는 그 패킷들을 다시 조립하려 원래의 데이터로 변환하는 과정을 거친다.
◾ IP 주소
- 인터넷에 연결되어 있는 모든 장치들을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소
- IPv4와 IPv6 두 가지 종류가 있으며, 일반적으로 IP주소라 함은, IPv4를 말한다.
💌 Reference
'스터디 > 테크톡' 카테고리의 다른 글
[테크 톡 - 18주차] 웹 소켓 (1) | 2023.10.27 |
---|---|
[테크 톡 - 17주차] OSI 7계층 (0) | 2023.10.21 |
[테크 톡 - 15주차] Enum (0) | 2023.09.13 |
[테크 톡 - 14주차] DTO와 VO (0) | 2023.09.13 |
[테크 톡 - 13주차] Git의 브랜치 전략 (0) | 2023.08.25 |