데이터가 손상되거나 유실되게되면 책임지지 않음.
전송계층
: 목적지에 신뢰할 수 있는 데이터를 전달
하기 위해 필요.목적지까지 데이터를 전달
, 전송계층은 데이터가 제대로 도착했는지 확인
& 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능
신뢰성/정확성, 효율성
연결형 통신
비연결형 통신
연결형 통신
, 효율적인 데이터 전송이 필요한 애플리케이션에는 비연결형 통신
TCP
: 전송 계층의 연결형 통신 프로토콜UDP
: 비연결형 통신 프로토콜캡슐화
: 응용 계층부터 물리 계층까지 계층별로 데이터를 전달할 때 헤더를 붙이는 것
역캡슐화
: 데이터 수신 측에서 물리 계층부터 응용 계층까지 계층별로 데이터를 전달할 때 헤더를 제거하는 것
TCP 헤더
: (전송계층에서)TCP로 전송할 때 붙이는 헤더 , 세그먼트
: TCP 헤더가 붙은 데이터
데이터를 전송하려면 연결
이라는 가상의 독점 통신로
를 확보해야함. ⇒ 이후에 데이터 전송이 가능
TCP 헤더와 코드 비트
SYN과 ACK
가 필요함.SYN
: 연결 요청, ACK
: 확인 응답 ( 다른 비트는 생각하지 않아도 됨.)연결은 SYN과 ACK
를 사용하여 확립 가능함.
연결 확립을 위해 코드 비트의 SYN과 ACK가 1로 활성화
됨.
데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세 번 교환하는 것을 3-way 핸드셰이크
라고 함.
데이터를 전송한 후에는 연결을 끊기 위한
요청을 교환해야 함.
연결을 끊을 때는 FIN과 ACK
를 사용하는데, FIN
은 연결 종료
를 뜻함.
FIN과 ACK가 1로 활성화됨.
일련번호와 확인 응답 번호
를 사용함.일련번호
는 송신 측에서 수신 측에 이 데이터가 몇 번째 데이터인지
알려주는 역할을 함. 전송된 데이터에 일련번호를 부여하면 수신자는 원래 데이터의 몇 번째 데이터
를 받았는지 알 수 있음.확인 응답 번호
는 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할
⇒ 다음 번호의 데이터를 요청하는 데도 사용됨.확인 응답
재전송
하게 되어있음.세그먼트(데이터)
를 하나씩 보낼 때마다 확인 응답을 한 번 반환하는 통신 ⇒ 비효율적
매번 확인 응답을 기다리는 대신 세그먼트를 연속해서 보내고 난 다음에 확인 응답을 반환하면 효율이 높아짐!
상대방에 세그먼트가 점점 쌓일 거 같은 우려가 있을수도 있지만? ⇒ 받은 세그먼트를 일시적으로 보관하는 장소가 있음. 버퍼 !!!
버퍼
덕분에 세그먼트를 연속해서 보내도 수신 측은 대응할 수 있고 확인 응답의 효율도 높아짐.
but, 수신 측이 세그먼트를 대량으로 받아서 처리하지 못하게 되면? ⇒ 오버플로우
현상이 발생하게됨.
버퍼의 한계 크기
를 알고 있어야함. ⇒ TCP 헤더의 윈도우 크기 값
윈도우 크기
: 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지를 나타내는 것 ⇒ 확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있는 데이터 크기
수신 측이 윈도우 크기를 가지고 있다면 확인 응답을 받지 않고도 세그먼트(데이터)를 연속적으로 전송할 수 있음 !!! 효율적인 방식
연결 확립, 재전송 제어, 윈도우 제어 => 이러한 기능에 의해 TCP는 데이터를 정확하게 전달하는 게 가능했음.
전송된 데이터의 목적지가 어떤 애플리케이션인지 구분하는 역할.
어느 애플리케이션의 데이터인지 알 수 없기 때문에 일어남.
출발지 포트 번호, 목적지 포트 번호
가 필요함.서버 측 애플리케이션
에서 주로 사용되고 있음.- 포트 번호를 붙이지 않고 통신하면 컴퓨터에 데이터가 도착하더라도 애플리케이션까지는 도착할 수 없다. ⇒ 결론적으로 `통신 불가`
효율성 중요!
브로드캐스트