세션 계층(sessoion layer)은 특정한 프로세스들 사이에서 세션(session)이라는 가상 연결을 확립하고 유지하며 동기화하는 기능을 제공한다. 여기서 프로세스는 사용자의 실제 응용 프로그램을 말한다. 한 사용자가 상대방 프로세스와 대화하기를 원한다면 이 대화를 구성하기 위해 양단간 연결을 설정해야 한다. 일단 연결이 완료되면 순차적인 방법으로 대화를 관장하여 대화의 흐름이 원활하게 이루어지도록 동기화 기능을 제공하거나 반이중 또는 전이중 전송 같은 전송 방향을 결정하는 기능을 제공한다.

[ 그림 2-14 ] 는 세션 계층의 동작을 나타낸 것으로 송신 측의 세션 계층은 표현 계층으로부터 받은 메시지를 효율적인 세션 관리를 위해 짧은 데이터 단위로 나눈 후에 전송 계층으로 내려보낸다. 수신 측의 세션 계층은 전송 계층으로부터 받은 메시지에서 헤더에 담긴 데이터의 종류와 동기점 정보 등을 확인한 후 표현 계층으로 데이터를 올려보낸다. 여기서 동기점을 두는 이유는 다음과 같다. 긴 파일을 전송하다가 통신 상태가 불량하여 전송 계층의 연결이 끊어지는 상황이 발생할 수 있다. 이때 어디까지 전송이 진행되었는지를 나타내는 동기점(synchronization point)이 있으면 처음부터 다시 파일을 전송하지 않고도 오류를 효과적으로 복구할 수 있다.

세션 계층은 사용자와 전송 계층 간의 인터페이스 역할을 하면서 사용자 간의 데이터 교환을 조직화하는 수단을 제공한다. 세션 계층의 주요 기능은 다음과 같다.