앞선 포스팅에서 설명한 OSI 와 TCP/IP 모델의 차이가 헷갈렸다.
어제 배운 OSI는 이론적으로 설계된 모델인 반면에, 오늘 알아볼 TCP/IP는 실제 인터넷 통신을 기반으로 하여 설계된 모델이다.
즉, OSI 모델은 7개 계층으로 이루어진 이론적 모델이며, TCP/IP 모델은 4개 계층으로 이루어진 실용적 모델이다.
인터넷에서 무언가를 다운로드할 때 중간에 끊기거나 빠지는 부분 없이 완벽하게 받을 수 있는 이유는 TCP가 데이터가 빠지지 않고 제대로 전달되었는지를 꼼꼼히 챙기기 때문이다.
앞서 OSI 7 계층의 각 기능에 대해서는 어제 글에서 자세하게 설명을 해두었으니 참고해주세요
1. Application Layer
프로그램(브라우저)가 직접 상호작용하는 레이어. 데이터를 처음으로 받는곳. HTTP, SMTP등의 프로토콜을 가진다.
2. Transport Layer
TCP가 있는 레이어. (OSI 7 계층 중 4계층이다.) 포트를 통하여 Application 레이어가 TCP에게 데이터를 전송한다. 각각의 포트에 프로토콜을 지정할 수 있다. 예를 들어, HTTP는 80이라는 포트를 사용한다. 이로써, TCP는 어디에서 데이터가 오는지를 정확히 알 수 있다. 포트를 통해 받은 데이터들은 패킷이라는 작은 단위로 쪼개진다. 이 패킷들은 제각각 가장 빨리 전송될 수 있는 인터넷 루트를 찾아 떠난다. 각각의 패킷들은 TCP header에 어떤 순서로 재조합 할지에 관한 정보를 가진다.
3. Internet Layer
패킷들이 인터넷 레이어에 push된다. IP를 사용하여 데이터의 원천지(origin)과 목적지(destination)에 관한 정보를 첨부한다.
4. Network Layer
마지막으로 패킷들은 네트워크 레이어로 전송된다. 알맞은 하드웨어로 데이터가 전달되도록 MAC주소를 핸들링 하는것 뿐 아니라, 데이터 패킷을 전기신호로 변환하여 선로를 통하여 전달할 수 있게 준비 해준다.
TCP와 IP의 차이
IP는 패킷들의 관계를 이해하지 못하고 그저 목적지를 제대로 찾아가는 것에 중점을 둔다.(오로지 데이터를 전달)
TCP는 통신하고자 하는 양쪽 단말( 출발지와 목적지)이 통신할 준비가 되었는지, 데이터가 제대로 전송되었는지, 가는 도중 변질되지 않았는지, 받는 사람이 얼마나 받앗고 빠진 부분은 없는지 등을 점검하는 역할이다.
위와 같은 정보는 TCP header에 담겨있다.
TCP Header에 들어있는 정보들
SYN, ACK, FIN, RST Source Port, Destination Port, Seqence Number, Window Size, Checksum과 같은 신뢰성 보장과 흐름제어, 혼잡 제어에 관여할 수 있는 요소들이 포함
+ IP Header와 TCP Header를 제외한 TCP가 실을 수 있는 데이터 크기를 '세그먼트(Segment)'라고 부른다.
Port를 이용한 연결을 하는 TCP
IP 정보 뿐만 아니라 Port를 이용하여 연결한다. 한쪽 단말(endpoint)에 도착한 데이터가 어느 입구(Port)로 들어가야 하는지 알아야 연결을 시도할 수 있다.
위의 TCP Header를 보면 Source Port와 Destination Port를 확인할 수 있다. 예를 들어, 양쪽 단말이 HTTP로 이루어진 문서를 주고받고자 할 경우 데이터 통신을 하려면 Endpoint의 3306포트, 21포트도 아닌 80 Port로 연결해야 한다.
만약 IP만 알고 있으면, IP에서도 어디서 필요한 패킷인지 알 수 없습니다. 이때 PORT정보를 통해 데이터를 어떤 애플리케이션에 전달할지를 구분한다. 즉, 한 대의 클라이언트 PC가 여러 대의 서버와 통신하고 있을 때, TCP/IP 패킷에 담긴 PORT에 따라 동일 IP 내의 프로세스를 구분할 수 있다. PORT는 0~65535까지 할당이 가능하지만, 0~1023 포트까지는 잘 알려진 포트이므로 사용하지 않는 것이 좋다.
TCP의 작동 (3 - way handshake)
데이터를 주고 받을 때 신뢰성이 있어야 한다. 전송하는 과정이 안전하고 빼먹은 정보가 없는지를 잘 확인을 해줘야 한다.
간단한 예시를 들어보자
친구와 전화하는 상황이다.
1. 전화번호를 누른다. 상대의 전화기가 꺼져있지 않는다면 연결음이 들리면서 연결을 시도한다.
2. 상대방이 전화를 받고 "여보세요"라는 말과 함께 자신이 받았음을 알린다.
3. 나도 "여보세요" 한마디와 함께 상대방이 나의 목소리가 잘 들리는지 확인하고 대화를 한다.
TCP도 위의 과정과 동일하다. TCP header에 SYN, SYN /ACK, ACK Flag를 사용하여 통신을 시도한다.
1. 송신자가 수신자에게 SYN을 날려 통신이 가능한지 확인한다. 이때 Port가 열려있어야 한다.
2. 수신자가 송신자로 부터 SYN을 받고 SYN /ACK를 송신자에게 날려 통신할 준비가 되었음을 알린다.
3. 송신자가 수신자의 SYN /ACK를 받고 ACK를 날려 전송을 시작함을 알린다.
위의 과정을 3 - way handshake라고 부르며 TCP로 이루어지는 모든 통신은 3 - way handshake을 통해 시작한다.
TCP의 특징
- 연결 지향: TCP는 데이터 전송 전에 송신자와 수신자 간에 연결을 설정하는 과정(3-way handshake)을 필요로 한다. 이를 통해 안정적인 연결을 유지한다.
- 신뢰성: TCP는 데이터의 전송이 신뢰성을 보장한다. 수신자가 데이터를 제대로 수신했는지 확인하고, 손실된 패킷은 재전송 요청을 통해 복구한다.
- 순서 보장: TCP는 데이터 패킷의 순서를 보장합니다. 수신 측에서는 패킷이 전송된 순서대로 재조립하여 사용자에게 전달한다. 이는 데이터의 무결성을 유지하는 데 중요하다.
- 흐름,혼잡 제어: TCP는 송신자와 수신자 간의 데이터 전송 속도를 조절하여, 수신자가 처리할 수 있는 속도로 조절하여 네트워크 안정성을 높이고 데이터를 전송한다. 이를 통해 네트워크 혼잡을 방지하고 패킷 손실을 줄이는데 도움이된다.
- 세그멘테이션: 큰 데이터 블록을 작은 세그먼트로 나누어 전송한다. 수신 측에서는 이 세그먼트를 조합하여 원래의 데이터로 복원한다.
- 포트 번호 사용: TCP는 포트 번호를 사용하여 여러 응용 프로그램 간의 데이터 전송을 구분한다. 각 애플리케이션은 고유한 포트 번호를 사용하여 통신한다.
- 체크섬: TCP는 데이터 전송 중 오류를 감지하기 위해 체크섬을 사용한다. 각 세그먼트에 체크섬을 포함하여 수신 측에서 오류를 검출할 수 있다.
https://nordvpn.com/ko/blog/tcp-ip-protocol/
TCP/IP란 무엇이며 어떤 원리로 작동하나요?
이 글을 읽고 TCP/IP 계층, 정의, TCP IP의 차이점, 데이터 보호 방법에 대해서 자세히 알아보세요.
nordvpn.com
https://aws-hyoh.tistory.com/57
TCP/IP 쉽게 이해하기
IT 분야에서 실무를 담당하시는 분들뿐만 아니라 학생, IT 쪽에 조금이라도 관심이 있는 분들이라면 TCP/IP에 대해 들어보셨을 겁니다. 저 또한 학부시절에 TCP/IP에 대해서 여러 번 들어보았는데요.
aws-hyoh.tistory.com
https://velog.io/@rosewwross/TCPIP
TCP/IP란
여러가지 web protocols중에 비교적 가장 최근에 발명된 통신규약이다.시초는 (역시) 미국이며, 지역네트워크(LAN)과 광역네트워크(WAN)간의 원활한 통신을 위하여 만들어 졌다.email, FTP등 우리에게 친
velog.io
[네트워크] OSI 7Layer / 7계층 개념 및 역할, 구조까지 한번에 알아보기
목차 FullMoon System fullmoon-system.com 정보처리기사 실기 C언어 코딩 기출변형 문제 #1코딩 문제의 경우 같은 문제를 여러 번 풀다 보면 답이 머리에 기억되어 새로운 문제가 필요하게 되는 순간이
onecoin-life.com
공부용으로 작성한 글이며 문제시 비공개 처리하도록하겠습니다. 피드백환영합니다.