お世話になっております。
C#でTCP、SSL通信を目的とし、以下のプログラムでサーバ側とクライアント側を作成しております。
環境開発はWindows7 32bit、Visual Studio Community2015、NETFramework4.5.2です。
PC2台にサーバとクライアントをそれぞれ立ち上げて行います。

クライアント側からサーバ側へ簡単なデータを送ります。
このプログラムでデータの送受信を見ましたら、暗号化されていないデータが見られました。(以下のプログラムですとHelloがもろ見えでした)
データを見たのはワイヤーシャークというソフトです。

サーバー側とクライアント側の初期のデータのやり取りを見ますと、
Client→Server「client hello」

Server→Client「server hello,certificate,server hello done」

Client→Server「ClientKeyExchange,ChangeCipherSpec」

となっておりました。ですので、サーバ認証はOKだと思っております。(自己署名証明書です)
その後、暗号化されたデータのやり取りを、、、と思ったのですが、暗号化されていませんでした。
本当に申し訳ありませんが、送受信の部分はうろ覚えです。
ただ、NetworkStreamのReadとwriteを使用して送受信をしていたのは覚えています。

質問は以下の通りです
1.NetworkStreamでの通信は暗号化されないのでしょうか。もしそうでしたら、暗号化されたデータのやり取りをする方法をご教授いただきたいです。
もしくは、ワイヤーシャークで取得しているデータは複合化されているデータなのでしょうか?
2.記載したプログラムでSSLの初期の「clientHello」であったり、鍵の交換であったりのやり取りは、クライアントを認証する部分で勝手にやってくれるのでしょうか。
それとも、本当は一つ一つのやり取り(鍵を生成して相手に渡す等)をプログラムする必要があるのでしょうか。

長くて申し訳ありません。よろしくお願いいたします。

サーバ側のプログラムになります。

TcpListener listener = new TcpListener(IPAddress.Any, 1300);
listener.Start();

// クライアントとの接続を待ちます
TcpClient clientSocket = listener.AcceptTcpClient();
X509Certificate certificate = new X509Certificate("自己署名証明書のパス", 
                                "自己署名証明書のパスワード");

// sslStreamを生成しclientSocketのデータを受け取ります
using (SslStream sslStream = new SslStream(clientSocket.GetStream()))
{
    // 証明書からクライアントを認証
    sslStream.AuthenticateAsServer(certificate);

    // 受信 
    Byte[] bytes = new Byte[17]; 
    NetworkStream RStream = clientSocket.GetStream();
    while((i = RStream.Read(bytes, 0, bytes.Length))!=0)  
    { 
         String data = System.Text.Encoding.UTF8.GetString(bytes, 0, i); 
         Console.WriteLine(String.Format("受信: {0}", data[0])); 
    } 
}

クライアント側のプログラムになります。

      static void Main(string[] args)
    {
    // Connect as client to port 1300
    string server = "127.0.0.1";
    TcpClient client = new TcpClient(server, 1300);

    // sslStreamを生成
    using (SslStream sslStream = new SslStream(client.GetStream(), false,
        new RemoteCertificateValidationCallback(ValidateServerCertificate), null))
    {
        // サーバからの証明書を見て認証
        sslStream.AuthenticateAsClient(server);

        // 送るデータ
        Byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello");
        NetworkStream sstream = client.GetStream(); 
        stream.Write(data, 0, data.Length);
    }
    // クライアントとのコネクトを解除
    client.Close();
}

// 呼び出される↓
public static bool ValidateServerCertificate(object sender, X509Certificate certificate,
    X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    // 証明書受け入れ
    return true;
}