전송계층
들어가기 앞서…
왜 필요할까?
네트워크 계층에서 다른 네트워크로 데이터를 전송하는 데에는 라우터가 필요하다.
그리고 라우터의 라우팅 기능을 이용하여 데이터를 전송한다.
그런데 이 라우터에 문제가 생기거나, 패킷이 손상되면 데이터가 수신지에 도착하지
못하게 될 것이다. 이런 문제를 예방하기 위해 전송계층이 존재하는 것이다.
네트워크 접속 계층과 네트워크 계층이 수신지에 데이터를 전달은 해주지만,
전송 중인 데이터가 손상되거나 분실되더라도 이러한 계층에서는 아무것도 해줄수 없다.
반면에 전송계층은 오류를 점검하는 기능이 있기 때문에 데이터에 오류가 발생하면
재전송을 요청할 수 있다.
즉, 네트워크 계층에서는 수신지까지 데이터를 전송하고, 전송 계층에서는 데이터가
제대로 도착했는지 확인하는 것이다.
전송계층
전송계층이란?
전송계층은 프로토콜(TCP,UDP)와 관련된 계층으로 오류복구 와 흐름제어 등을 담당하며,
두 시스템 간에 신뢰성 있는 데이터를 전송한다.
또한 네트워크 계층에서 전송된 데이터를 세션 계층의 어느 애플리케이션에 보낼지 판독하고,
네트워크 계층으로 전송할 경로를 선택한다.
전송계층은 전송하려는 데이터를 여러 개의 패킷으로 나누어 네트워크 계층에 보내는데,
이때 패킷을 독립적으로 전송하기 때문에 송신하는 순서와 수신측에서 수신하는 순서가
달라질 수도 있다.
한편 전송 계층은 전체 데이터를 수신 측에 올바르게 전송하려고 하므로, 수신한 데이터의
순서를 재설정하고 오류가 있는 패킷을 재전송할 수 있다.
즉, 송신하려는 데이터를 패킷으로 분할하고, 수신한 패킷을 재조립한다.
전송계층의 통신방식
▷ 연결형 통신
• 신뢰할 수 있고 데이터를 정확하게 전송하는 통신이다.
• 연결형 통신에는 TCP
가 있다.
▷ 비연결형 통신
• 효율적으로 데이터를 보내는 통신 (일방적 데이터 전송)
• 비연결형 통신에는 UDP
가 있다.
• 동영상을 재생할 때 사용하는 통신 방법.
전송계층의 프로토콜 : TCP
TCP란?
연결 지향형 프로토콜인 TCP는 신뢰성 있는 바이트 스트림 서비스를 제공한다.
연결 지향이란 응용 프로그램이 데이터를 교환하기 전에 서로 TCP연결을 확립해야 함을
의미하고, 신뢰성이 있다는 말은 데이터를 성공적으로 수신했거나 오류가 발생했음을
알려주는 것을 의미한다. TCP는 신뢰성 있는 데이터를 전송하기 위해 패킷 번호를 사용한다.
Port
TCP가 상위 계층으로 데이터를 전송하거나 상위 계층에서 TCP로 데이터를
전송할 때 상호 간에 사용하는 데이터의 이동 통로 로 포트를 사용한다.
통신할 때 여러 웹 사이트에서 동시에 파일을 다운로드할 수 있는데,
왜냐하면, TCP 프로토콜이 포트를 여러개 사용하여 상위계층과 통신을 하기 떄문이다.
포트번호가 다르면 통신을 할 수 없다.
▷ 알려진 포트 번호
포트 번호 | 애플리케이션 |
---|---|
21 | FTP |
25 | SMTP |
53 | DNS |
80 | HTTP |
110 | POP3 |
443 | HTTPS |
TCP 세그먼트
• IP헤더 + TCP헤더 + TCP데이터
3 hand shake
각 코드 비트는 실행될 때 활성화 된다. (0 → 1)
SYN : 연결을 초기화하려고 순서 번호 동기화
ACK : 응답 확인 번호 사용
FIN : 데이터 송신 종료
전송계층의 프로토콜 : UDP
UDP (User Datagram Protocol) 란?
비연결 지행 프로토콜로, TCP와 달리 패킷이나 흐름 제어, 단편화 및 전송 보장 등의
기능을 제공하지 않는다. UDP헤더는 TCP헤더보다 간단하기 때문에 상대적으로 통신
과부하가 적다.
UDP 통신은 요청 메시지와 응답 메시지만으로 구성되고 주로 적은 양의 데이터 전송에
사용된다. UDP를 사용하는 대표적인 응용 계층 프로토콜은 DNS, DHCP, SNMP 등이다.