2022. 5. 5. 18:58ㆍComputer Science/Network
✅ 아래 내용들에 대해서 알아보자
- TCP란
- TCP 프로토콜의 작동 흐름
- IP란
- IP 프로토콜의 특징 및 한계
TCP
TCP(Transmission Control Protocol)는 OSI 7 Layer의 4 계층(TransPort)에 있는 핵심 Protocol 중 하나로 TCP/IP라는 명칭으로 널리 불리고 데이터 전송에 대한 역할을 담당한다. TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 한다.
TCP는 웹에서 서버에 연결 할 때 사용되며, 이메일 전송이나 파일 전송에도 사용된다.
TCP 프로토콜 특징
- 가상회선 방식(TCP 3 way handshake)으로 패킷을 교환
- 데이터의 전송/제어 기능을 통해서, 데이터 전송의 신뢰성을 보장한다.
- 프로토콜 스펙 중 체크섬 필드를 통해 패킷 손실 여부를 판단한다.
- point to point 연결 방식으로 전이중/양뱡향에서 데이터 전송이 가능하다.
- 재전송/시간제한 기법/순서번호(syn)와 확인번호(ack)를 사용하여 패킷의 흐름/혼잡/순서 등을 제어한다.
TCP 프로토콜 작동 흐름
TCP 프로토콜의 작동은 크게 3 가지의 흐름으로 구분한다.(1. 연결 생성 -> 2. 자료 전송 -> 3. 연결 종료)
신뢰성 있는 연결이 생성되어야 하며, 그 후 자료를 전송하고, 연결이 종료되면 커넥션 해제 후 할당된 자원을 반납한다.
신뢰성 있는 연결을 하기 위해 TCP는 3 Way Handshake 과정을 진행하게 된다. 3 Way Handshake에 대해서 알아보자.
TCP 3 Way Handshake
1. Client는 Server와 통신하기 위해 SYN 메시지를 보낸다. 이 메시지에 클라이언트가 임의로 설정한 값을 시퀀스 번호(seq)로 설정해서 보내진다.(오른쪽 그림에서는 x 값)
2. 서버는 클라이언트에게 SYN-ACK 메시지로 응답한다.
이때 메시지에 시퀀스 번호(seq)는 서버가 임의로 설정한 값(y), 응답 번호(ack)는 클라이언트가 보낸 시퀀스 번호에 1을 더해서 응답하게 된다.(x+1)
3. 클라이언트는 서버에게 ACK 메시지를 보내 응답을 한다.
이때 메시지에 포함된 응답번호(ack)는 서버가 보낸 시퀀스번호에 1을 더해서 (y+1) 보내고, 시퀀스 번호(seq)는 서버가 보낸 ack 번호를 그대로 같이 보내게 된다.
이러한 연결 과정을 통해 신뢰성 있는 연결을 맺은 뒤 데이터를 전송하게 된다.
TCP 4 Way Handshake
TCP는 연결(Connection)을 종료하기 위해 4 Way Handshake 과정을 진행하게 된다.
1. 클라이언트에서 서버와의 연결 종료를 위해 서버에 FIN 패킷을 보내고 FIN_WAIT1 상태가 된다. 이때 seq 번호를 같이 보낸다
(반대로 서버에서 먼저 끊을 수 도 있음)
2. 서버는 클라이언트로부터 FIN을 받고 응답 패킷 ACK을 보낸다. 상태는 CLOSE_WAIT가 된다. 이때 ack는 이전의 seq+1을 하여 보낸다.
3. 서버가 통신이 끝나면, 연결을 종료할 준비가 되면 클라이언트에게 FIN 패킷을 보내고 LAST_WAIT 상태가 된다.
4. 클라이언트는 확인 패킷 ACK를 보내고 TIME_WAIT 상태가 되고 마지막으로 Socket terminated가 되고 연결이 끊기게 된다.
상태 | 설명 |
FIN_WAIT1 | Close를 호출한 측의 소켓이 진입하는 상태, FIN 보냄 |
CLOSE_WAIT | Close를 받으면 CLOSE_WAIT 상태로 진입함, Ack 보냄 |
FIN_WAIT2 | Ack 신호를 받은 소켓은 FIN_WAIT1 > FIN_WAIT2로 상태 변경됨 |
LAST_WAIT | Close 호출 후 진입하는 상태, FIN 보냄 |
TIME_WAIT | Close를 받으면 진입하는 상태, ACK 보냄 |
CLOSED | 연결 종료 상태 |
IP
IP(Internet Protocol)는 송신/수신 호스트가 서로 패킷(데이터, 정보)를 교환하기 위해 사용하는 OSI 7 Layer의 3 계층(Internet)의 프로토콜 중 하나이다. IP는 패킷 혹은 데이터그램이라고 하는 덩어리로 나뉘어 전송한다.
IPv4 주소의 체계
32bit로 구성되어 있으며, 논리적인 주소 체계이다.
IP 프로토콜 특징 및 한계
- 비신뢰성/비연결성을 가진다. IP는 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 않는다.(중간에 패킷이 사라지면? 혹은 패킷이 순서대로 안 오면?) -> 그래서 IP 프로토콜은 상위 4 계층의 TCP 프로토콜과 같이 쓰이게 된다!
- IP는 A/B/C 클래스로 나뉘어 관리된다.
- IPv4사용 중 주소 부족으로 인해 IPv6로 관리되고 있다
참고자료
- https://www.inflearn.com/course/lecture?courseSlug=http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&unitId=61360&tab=curriculum
- https://ko.wikipedia.org/wiki/%EC%A0%84%EC%86%A1_%EC%A0%9C%EC%96%B4_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C#/media/%ED%8C%8C%EC%9D%BC:Tcp-handshake.svg
- https://en.wikipedia.org/wiki/IEEE_802.11i-2004
- https://sh-safer.tistory.com/146
- https://velog.io/@fnrkp089/HTTP%ED%86%B5%EC%8B%A0-%ED%86%B5%EC%8B%A0-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C
'Computer Science > Network' 카테고리의 다른 글
HTTP Method 안전성, 멱등성, 캐시성 이해하기 (0) | 2023.02.28 |
---|---|
HTTP 프로토콜 (0) | 2023.02.27 |
URI, URL ,URN 뭐가 다를까? (0) | 2023.02.27 |
Http 상태 코드 정리 (0) | 2022.04.10 |