전송 계층, 연결형 통신과 비연결형 통신, TCP, UDP
목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요
전송계층의 특징
(1) 신뢰성/정확성 : 데이터를 목적지에 문제없이 전달한다 = 연결형 통신
(2) 효율성 : 효율적으로 데이터를 전달한다 = 비연결형 통신
연결형 통신, 비연결형 통신
신뢰성과 정확성을 우선으로 하는 연결형 통신 프로토콜
TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로로 연결을 확립하는 것
연결형 통신의 전송
(1) 전송 전 먼저 연결(connection. 가상의 독점 통신로)를 확보한다
(2) 연결의 확립이 끝나면 데이터를 전송한다
코드비트
: TCP 헤더의 1-7~112번째 비트까지의 6비트. 제어 정보 기록
(1) 초깃값 0, 활성되면 1
(2) SYN(연결 요청), ACK(확인 응답)를 이용해서 연결 확립
신뢰할 수 있는 연결을 위해 데이터 전송 전 패킷을 교환해 연결을 확립한다.
(1) 연결 확립 요청
: 통신을 하기 위해 컴퓨터 2에게 허가를 받아야 한다
: 컴퓨터 1에서 컴퓨터 2로 연결 확립 허가를 받기 위한 요청(SYN)을 보낸다
(2) 연결 확립 응답 + 연결 확립 요청
: 컴퓨터 2는 컴퓨터 1이 보낸 요청을 받은 후, 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)을 보낸다.
: 동시에 컴퓨터 2는 컴퓨터 1에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)을 보낸다
(3) 연결 확립 응답
: 컴퓨터 2의 요청을 받은 컴퓨터 1은 컴퓨터 2로 허가한다는 응답으로 연결 확립 응답(ACK)
를 보낸다.
데이터 전송이 완료되고 연결을 끊을 때도 확인 작업 필요!
: FIN (연결 종료)와 ACK를 사용한다.
3-way handshake 이후 데이터 전송에 사용되는 TCP 헤더의 일련번호와 확인 응답 번호
일련번호 (sequence number)
: TCP가 데이터를 분할해서 보낼 때, 이 데이터가 몇 번째 데이터인지를 알려준다.
: 수신자는 일련번호를 통해 원래 데이터의 몇 번째 데이터를 받았는지 알 수 있다.
확인 응답 번호 (acknowledgement number)
: 수신측이 몇 번째 데이터를 수신했는지 송신측에 알려준다.
: 다음 번호의 데이터를 요청(확인 응답)하는데 사용된다.
재전송 제어
: 데이터가 손상되거나 유실된 경우, 일련번호와 확인 응답 번호를 사용해서 데이터를 재전송한다.
: 전송 도중 오류가 발생하면 일정 시간 대기 후 재전송한다.
확인 응답을 하지 않는 세그먼트 송신
: 세그먼트(데이터) 하나를 보낼 때마다 확인 응답을 한 번 반환하므로 효율이 낮다
: 매번 확인 응답을 기다리는 대신, 세그먼트를 연속해서 보낸 후 확인 응답을 반환한다.
버퍼 (buffer)
: 매번 확인 응답을 기다리는 대신, 세그먼트를 연속해서 보낸 후 확인 응답을 반환한다.
: 받은 세그먼트를 일시적으로 보관하는 장소
: 수신측이 연속적인 세그먼트에 대응할 수 있고 확인 응답의 효율이 높아진다
오버플로 (overflow)
: 수신측이 대량으로 전송된 데이터를 보관하지 못해 버퍼에서 데이터가 넘치는 것
: 막기 위해 버퍼의 한계 크기를 알아야 한다
윈도우 크기 (window size)
: TCP 헤더에 버퍼의 한계 크기를 기재한 것
: 얼마나 많은 용량의 데이터를 저장할 수 있는가?
: 확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있는 데이터의 크기를 의미
: 3-way handshake를 할 때 송수신측은 서로의 윈도우 크기를 확인하고, 상대 버퍼의 한계 값을 찾아 세그먼트가 오버플로되지 않도록 한다.
포트 번호 : 데이터의 목적지가 어떤 프로그램인지를 구분한다
포트 번호 (port number)
: 전송 계층에서 해당 데이터가 어떤 애플리케이션에서 쓰이는지 판별할 때 사용
: TCP 헤더의 출발지 포트 번호(source port number) & 목적지 포트 번호(destination port number)
(1) 잘 알려진 포트(well-known ports) : 0 ~ 1023번 포트. 주요 프로토콜이 사용하도록 예약
(2) 랜덤 포트 : 1025번 이상의 포트.
(3) 1024번 : 예약되어 있지만 사용되지 않는 포트
웹 브라우저로 접속할 때 웹 브라우저에는 임의의 포트가 자동으로 할단된다
: 서버측에만 포트번호 정해두면 됨!
효율성을 우선으로 하는 비연결형 통신 프로토콜
UDP
: 데이터 전송 시 확인 작업을 일일이 거치지 않아, 효율적으로 빠르게 보낼 수 있다
: 스트리밍 등 빠른 속도가 필요한 서비스에 활용한다
: 브로드캐스트(broadcast)를 이용, 랜에 있는 컴퓨터/네트워크로 데이터를 일괄 전송 가능
TCP는 무조건 확인 응답을 하나씩 보내야하므로, 목적지를 지정하지 않고 불특정 다수에게 보내는 일괄통신에 적합하지 않다.
UDP 헤더
: 올바른 목적지의 애플리케이션으로 데이터를 전송하기 위한 필요 정보 기록
: UDP 데이터그램 - UDP 헤더가 붙은 데이터