TCP (전송 제어 프로토콜)은 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜이다.
TCP는 transport layer에서 사용되는 프로토콜
어플리케이션: 응용프로그램에서 데이터를 처리하는 계층
전송: 어플리케이션에서 넘어온 데이터에 대한 검증, 재전송 등 제어를 담당하는 계층
인터넷: 데이터를 목적지까지 효율적으로 전달
네트워크 엑세스: 실질적으로 데이터를 전송
SP : 출발지 포트 번호, DP: 목적지 포트번호
내 컴퓨터 소켓 포트번호, 목적지 포트 번호 모두 알고 있음
SA : 출발지 IP 주소, DA: 목적지 IP 주소
SA는 알지만 목적지 IP 주소는 아직 모르는 상태, 따라서 도메인 서버에 DNS 쿼리를 보내고, IP 주소를 응답받음
Ethernet 헤더에서 중요하게 볼 것은 SA(출발지 MAC 주소)와 DA(목적지 MAC 주소)
여기서 목적지 MAC 주소는, 구글의 MAC 주소가 아닌, 물리적으로 연결된, 패킷이 전달될 라우터(예를 들어, 공유기) 또는 게이트웨이의 MAC 주소를 의미
라우터의 MAC 주소를 알아내기 위해, ARP 프로토콜을 사용
ARP 프로토콜이란?
주소 결정 프로토콜(Address Resolution Protocol)
해당 IP를 그 IP주소에 맞는 물리적인 주소 즉, MAC주소를 가지고 오는 프로토콜
작동원리
때문에 송신측과 수신측이 연결되어야함
TCP 헤더에 표시한 플래그들이 사용되며, 이러한 플래그들을 컨트롤 비트라고 부름
여기서 사용되는 것은 SYN(동기화), ACK(승인)
1: 접속
2: 수락
3: 연결
라우팅을 통해 패킷을 목적지 서버에게 전송
패킷은 Network Access Layer의 MAC 주소와 Internet Layer의 IP 주소로 라우팅을 반복해 목적지 구글 서버까지 도착
구글 서버가 받은 패킷 내부 Transport Layer의 목적지 포트 번호에는 80번이 적혀져있음
따라서, Transport Layer는 80번 포트를 사용하고 있는 Application Layer에 데이터를 전송
Application Layer는 HTTP Request 데이터를 받아, “/” 에 매핑된 GET 요청을 처리
이후, 적절한 HTML을 클라이언트에게 응답. 클라이언트는 라우팅을 통해 전달 받은, “www.google.com” 에 해당하는 HTML 을 브라우저에 띄우게 됨
ACK(연결), FIN(종료) 사용
2번이 3번보다 늦게 도착할 수 있다는 문제점이 생김
따라서, 클라이언트는 서버로부터 FIN 패킷을 받고, ACK 패킷을 보낸 뒤에도 일정 시간동안 혹시나 아직 도착하지 않은 잉여 패킷을 기다린다.
연결을 위해 할당되는 논리적인 경로가 없는데,
그렇기 때문에 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 되는데 이렇게 데이터를 서로 다른 경로로 독립적으로 처리하게 됨.
신뢰성보다는 연속성이 중요한 서비스, 예를 들면 실시간 서비스(streaming)에 자주 사용된다.
[2.5차/15기 김제성] API & REST API (0) | 2023.03.23 |
---|---|
[2차시/15기 이병주] REST API 와 GraphQL (0) | 2023.03.23 |
[2차시/16기 박민규] HTTP&HTTPS (0) | 2023.03.22 |
[1.5차시/16기 박민규] TCP/IP (0) | 2023.03.22 |
[1차시/16기 박민규] OSI 7계층 (0) | 2023.03.22 |
댓글 영역